일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- SQL
- Numpy
- skip-gram
- Programmers
- stak
- PPMI
- Sigmoid
- Stack
- Heap
- algorithm
- sort
- Word2vec
- affine
- 프로그래머스
- MySQL
- CBOW
- 신경망
- dl
- que
- boj
- 딥러닝
- kakao
- DeepLearning
- backward
- select
- FullyConnectedLayer
- Python
- 자연어처리
- hash
- 파이썬
- Today
- Total
혜온의 이것저것
[코딩테스트 고득점 kit] 스택/큐 - 프린터 (Python) 본문
문제 이해 및 풀이
우선 프린터의 우선순위 중에서 내가 원하는 프린트물이 언제 프린트 되는 지 확인해야하기 때문에 우선순위와 함께 움직일 인덱스 배열 num_idx를 만들어주었다.
우선순위가 제일 높은 값을 먼저 프린트해 줄 것이기 때문에 가장 높은 우선순위 값을 max로 구하여 max_num이라는 변수에 저장해두었다.
이후 priorities의 첫번째 값을 확인하여 max_num가 같다면 우선순위가 제일 높은 값이므로 priorities에서 제거해주고 해당하는 인덱스 값도 pop(0)해주고, 프린트 하나가 진행되었다는 표시로 answer값을 1씩 증가시켜준다.
이 때 num_idx의 값을 확인하여 내가 원하는 location값이면 answer를 return해준다.
만약 max_num이 아니라면 대기목록의 제일 마지막 순서로 이동하기 때문에 pop(0)한 값을 append시켜준다.
num_idx에서도 같은 작업을 해준다.
위 작업을 priorities에 아무 것도 남지 않을 때까지 반복해준다.
최종 코드
def solution(priorities,location):
answer=0
num_idx=[i for i in range(len(priorities))]
while len(priorities)>0:
max_num=max(priorities)
num=priorities[0]
if num==max_num:
priorities.pop(0)
check=num_idx.pop(0)
answer+=1
if location==check:
return answer
else:
priorities.append(priorities.pop(0))
num_idx.append(num_idx.pop(0))
return answer
다른 사람 코드
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
나는 max_num을 구하여 priorities의 첫번째 값이 max_num과 같은지 확인해주었는데 이 작업을 any를 사용하면 조금 더 간단하게 적용이 가능하다.
문제 출처
프로그래머스 코딩테스트 고득점 kit
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithm > Programmers' 카테고리의 다른 글
[코딩테스트 고득점 kit] 스택/큐 - 올바른 괄호 (Python) (0) | 2023.04.10 |
---|---|
[코딩테스트 고득점 kit] 스택/큐 - 기능개발 (Python) (0) | 2023.04.06 |
[코딩테스트 고득점 kit] 스택/큐 - 같은 숫자는 싫어 (Python) (0) | 2023.04.06 |
[코딩테스트 고득점 kit] 해시 - 베스트앨범 (Python) (0) | 2023.04.05 |
[코딩테스트 고득점 kit] 해시 - 위장 (Python) (0) | 2023.04.05 |