문제) 프린터
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 내 풀이
- 처음에 queue에 value값을 넣고 key값을 찾으려 함
- -> 런타임 에러
- queue에 key값을 넣어서 풀이
- key값이 유일하기 때문에 value로 key값을 찾는게 아니라 key로 value 찾아야 함
- dictionary.get(key) 로 value값을 바로 찾을 수 있음
- dic.values()로 위에서 찾은 value를 모든 value값들과 비교 가능
- 처음에 queue에 value값을 넣고 key값을 찾으려 함
from collections import deque
def solution(priorities, location):
answer = []
queue=deque([i for i in range(len(priorities))])
dic={idx:p for idx,p in enumerate(priorities)}
while queue:
key=queue.popleft()
value=dic.get(key)
if value<max(dic.values()):
queue.append(key)
continue
answer.append(key)
del dic[key]
return answer.index(location)+1
- 다른 사람 풀이
- 딕셔너리 없이 queue만으로 해결
- popleft()대신 pop(0) 하면 (idx, p) 값 한번에 출력됨
- -> (idx, p)값에 인덱스를 사용해서 각각 불러오기 가능
- 대신 value값 비교를 매번 for문을 돌아서 전체 비교
- 순서를 인덱스 값이 아닌 answer+=1 로 바로 계산
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
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 2] [완전탐색] 소수 찾기 (0) | 2022.07.28 |
|---|---|
| [프로그래머스] [Level 2] [Heap] 더 맵게 (0) | 2022.07.26 |
| [프로그래머스] [Level 2] [스택/큐] 기능 개발 (0) | 2022.07.23 |
| [프로그래머스] [Level 2] [해시] 위장 (0) | 2022.07.21 |
| [프로그래머스][Level 2][해시] 전화번호 목록 (0) | 2022.07.18 |