이번에 올리는 문제는~~~ 바로 프린터입니다. 한번 봅시다~
문제 설명은 당연히 안하고요.. 문제를 이해했다는 전제 하에 코드 설명이 들어갈 예정입니다. 그리고 파이썬을 이용해서 풀었습니다~
한번 가봅시다! 아래 링크를 통해 문제를 확인할 수 있습니다~
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
*채점 결과

*작성 코드
def solution(priorities, location):
###0
result = []
order = []
data = []
for i in range(len(priorities)):
order.append(i)
data.append(priorities[i])
###1
while len(result) < len(priorities):
st = priorities[order[0]]
if st < max(data):
order.append(order[0])
else:
result.append(order[0])
data.pop(data.index(st))
order.pop(0)
return result.index(location)+1
왜 이렇게 짰는지 코드 순서를 설명하며 얘기해보겠습니다.
0) 변수 설정
- order : 순서를 확인할 문서들의 각 번호들을 순서대로 저장한 리스트
- data : 현재 확인할 문서들 중에서 순서 상관없이 가장 큰 중요도를 확인하기 위한 용도의 리스트
- result : 출력할 문서번호들을 문제에서 요구하는 순서대로 저장한 리스트, 해당 리스트를 이용해 location이 출력되는 순서를 확인합니다.
1)
- 일단 while 문의 종료 조건은 result의 크기가 priorities와 같아질 때입니다.
ㄴ 왜냐하면 이렇게 되야 전체 문서의 출력 순서를 확인할 수 있기 때문입니다.
- st: 인쇄 대기 목록의 가장 앞에 있는 문서의 중요도
- case 1: data에 대해서 앞서 말한 용도를 이용해서 st가 가장 큰 중요도보다 작은 경우, 대기목록의 제일 뒤로 옮기기](프린터 문제 설명의 2와 동일)
- case 2: case 1이 아니라면 result에 order[0] 넣기(프린터 문제 설명의 3과 동일),
ㄴ 그리고 해당 값이 가장 중요도가 높은 값이여서 더 이상 비교할 필요가 없어지므로 data에서 빼기
- order[0]을 다 사용했으므로 이제 빼기
2) 변수 설명에서 result에 대한 설명을 보면 알 수가 있습니다.
- result.index(location)를 이용하여 result 내의 location이 어딨는지 확인한 후, 1을 더하여
첫번째, 두번째, 세번째... 와 같이 해당 위치를 출력하게 만듦
'코딩' 카테고리의 다른 글
| 프로그래머스 - 코딩테스트 고득점 Kit - 정렬 - 가장 큰 수 (python) (실패...) (0) | 2023.01.19 |
|---|---|
| 프로그래머스 - 코딩테스트 고득점 Kit - 스택/큐 - 주식가격 (python) (0) | 2023.01.04 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 스택/큐 - 올바른 괄호(python) (0) | 2023.01.04 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 스택/큐 - 기능개발(python) (0) | 2023.01.04 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 스택/큐 - 같은 숫자는 싫어(python) (0) | 2023.01.04 |