https://programmers.co.kr/learn/courses/30/lessons/42587
내 풀이
def solution(priorities,location):
M = max(priorities)
answer=1
while True:
tem = priorities.pop(0)
if M == tem:
if location ==0:
return answer
else:
answer +=1
location -=1
M = max(priorities)
else:
priorities.append(tem)
if location==0:
location = len(priorities)-1
else:
location -=1
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): //q[1]의 요소중 단 하나라도 cur[1]보다 크다면
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
공부를 똑바로 안한 티가난다.
부끄럽지만 any라는 문법을 처음보았다.
그래서 정리해본 any 의 뜻과 사용법
전체적으로 문제가 어렵지는 않았는데 소요시간이 너무 오래걸렸다.
한시간 이상은 쓴거같다. 다시 좀 공부에 매진해야 할 시간이 돌아온거같다.
'취준 > 프로그래머스' 카테고리의 다른 글
소수 찾기 - 파이썬 (0) | 2022.07.02 |
---|---|
가장 큰 수 - 파이썬 (0) | 2022.07.01 |
튜플 - 파이썬 (0) | 2022.06.23 |
뉴스 클러스터링 - 파이썬 (0) | 2022.06.15 |
괄호 변환 - 파이썬 (0) | 2022.06.13 |