일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- backward
- 자연어처리
- affine
- dl
- FullyConnectedLayer
- kakao
- Numpy
- Sigmoid
- sort
- PPMI
- Python
- Stack
- stak
- que
- 파이썬
- DeepLearning
- 딥러닝
- skip-gram
- 신경망
- hash
- select
- boj
- 프로그래머스
- MySQL
- Heap
- Programmers
- SQL
- Word2vec
- algorithm
- CBOW
- Today
- Total
혜온의 이것저것
[코딩테스트 고득점 Kit] 스택/큐 프린트 - Python 본문
[문제 이해 및 풀이]
최대값이 맨 앞에 있을 때에만 출력이 발생하고 최대값이 아닌 경우에는 순서가 올 때까지 리스트의 뒤로 들어가면서 인덱스가 계속 변하게 된다.
맨 처음에는 앞에 있는 값이 뒤로 간다는 것 때문에 deque의 rotate를 사용해야 하나 싶어 구현해 보려고 했지만 실패했다.
같은 숫자가 있는 두번째 예시와 같은 경우에는 숫자를 찾아도 그게 내가 원하는 값인지 아닌지 구별이 꼭 필요하다.
그래서 target을 명시해 주는 target 리스트를 새로 만들어 주었다.
priorities.pop(0) 값을 num에 저장해둔뒤 비교를 진행하였다.
최대값이 아니라면 최대값이 나올 때 까지 다시 리스트의 맨 뒤에 append 시켜줬다. 이때 target에서도 똑같이 움직였다.
최대값일때에는 내가 원하는 target값인지 확인을 한후, target이 아니라면 출력이 됐다고 처리하여 answer의 값을 하나 증가시키고, target이라면 answer 값을 return해주었다.
[나의 코드]
def solution(priorities, location):
target=priorities.copy()
answer=1
target[location]='target'
while(priorities):
max_num=max(priorities)
num=priorities.pop(0)
if num == max_num:
if target[0]=='target':
return answer
else:
target.pop(0)
answer+=1
else:
priorities.append(num)
target.append(target.pop(0))
[다른 사람의 코드]
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
제출하고 다른 사람들의 코드를 확인하면서 부족한 부분을 공부하였다.
계속해서 변하는 리스트의 index값 때문에 target이라는 리스트를 새로 만들어 주었는데, enumerate를 사용하면 따로 리스트를 만들지 않아도 원래의 위치를 기억할 수 있었다.
또한 max를 따로 구해주지 않아도 any를 사용하면 좀 더 쉽게 비교할 수 있었다.
- 다음에 꼭 사용해 볼 것 : enumerate, any
문제출처 : https://programmers.co.kr/learn/courses/30/lessons/42587
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
'Algorithm > Programmers' 카테고리의 다른 글
[코딩테스트 고득점 KIT] 정렬 가장 큰 수 - Python (0) | 2021.09.28 |
---|---|
[코딩테스트 고득점 Kit] 정렬 K번째 수 - Python (0) | 2021.09.27 |
[코딩테스트 고득점 Kit] 힙(Heap) 이중우선순위큐 (0) | 2021.09.24 |
[코딩테스트 고득점 Kit] 힙(Heap) 더 맵게 - Python (0) | 2021.09.22 |
[코딩테스트 고득점 Kit] 스택/큐 기능개발 - Python (0) | 2021.09.14 |