스택, 큐부분 2단계 문제 프린터다! 으으 ㅠㅠ 어렵다.. 먼저 내가 푼 코드이다!
def solution(priorities, location):
cnt=0
while True:
if priorities[0] < max(priorities):
if location == 0:
location = len(priorities) -1
else:
location-=1
priorities.append(priorities.pop(0))
else:
if location == 0:
return cnt+1
else:
cnt+=1
location-=1
priorities.pop(0)
먼저 priorities의 첫번째 원소와 priorities에서 제일 큰 원소를 비교한다. 만약 priorities[0]보다 큰 원소가 있을 때에는 가장 첫번째 원소를 제일 뒤로 보내줘야한다. 그에 맞게 location도 지정해주었다.
첫번째 원소보다 큰 원소가 없을 경우, location이 가장 앞이라면 cnt(작업 순서)를 return 해준다. 제일 앞이 아니면 가장 앞의 원소를 pop하고 location과 cnt를 맞게 설정해준다.
다른사람이 푼 것
def solution(priorities, location):
queue = [(i,p) for i,p in enumerate(priorities)]
answer = 0
while True:
cur = queue.pop(0)
if any(cur[1] < q[1] for q in queue):
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
먼저 enumerate를 사용하여 인덱스번호와 원소를 튜플형태로 만들어 반환한다. 튜플을 모아 리스트로 만들어서 queue변수에 넣는다. queue의 첫번째 튜플을 pop하고 이 튜플의 첫번째 원소와 queue의 첫번째 원소들을 비교하면서 any를 사용하여 하나라도 True가 있으면(queue가 더 큰게 있으면) 제일 끝에 cur을 붙힌다. 만약 없으면 location을 비교하여 답을 리턴한다.
enumerate
- 반복문 사용시 몇번째 반복문인지 확인이 필요한데 이때 사용한다.
- 인덱스 번호와 컬렉션의 원소를 tuple 형태로 반환한다.
a = [1,2,3,4,5,6]
for i in enumerate(a):
print(i)
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
(5, 6)
#####################
a = [1,2,3,4,5,6]
for i,v in enumerate(a):
print("index : %d,value: %d"%(i,v))
index : 0,value: 1
index : 1,value: 2
index : 2,value: 3
index : 3,value: 4
index : 4,value: 5
index : 5,value: 6
####################
a = [1,2,3,4,5,6]
b = [(i,v) for (i,v) in enumerate(a)]
print(b)
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
all,any
all()
인자로 받은 모든 요소가 True이면 True를 반환한다.
하나라도 False가있으면 False를 반환한다.
any()
하나라도 True가 있으면 True를 반환한다.
모두 False여야 False를 반환한다.
https://programmers.co.kr/learn/courses/30/lessons/42587
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 가운데 글자 가져오기 (0) | 2021.07.28 |
---|---|
[프로그래머스] K번째수 (0) | 2021.07.28 |
[프로그래머스]기능개발 (0) | 2021.07.23 |
[프로그래머스] 완주하지 못한 선수 (1) | 2021.07.17 |
[프로그래머스] 전화번호 목록 (1) | 2021.07.17 |