문제
풀이
처음에 보면서 역순으로 출력하고 같은 숫자가 있을 때에는 그중에 역순으로 출력된다고 생각했다.
def solution(priorities, location):
value = priorities[location]
count = priorities.count(value)
orderInSameValue = 0
for i in range(len(priorities)):
if value == priorities[i]:
orderInSameValue += 1
if location == i:
break
priorities.sort(reverse = True)
return priorities.index(value) + (count - orderInSameValue) + 1
후다닥 짜봤는데 6개의 케이스에서만 통과했다. 생각해보니 같은 중요도일 때 단순히 역순이 아니었다.
왜 난 꼭 이걸 해보고 나서야 아는건지.. 앞으론 시간 절약을 위해 풀기 전에 좀 더 잘 생각해 봐야겠다.
def solution(priorities, location):
value = priorities[location]
poped = 0
while True:
maxValue = max(priorities)
if maxValue == value and value == priorities[0]:
return location + 1
while maxValue > priorities[0]:
priorities.append(priorities.pop(0))
if location - poped == 0:
location += (len(priorities) - 1)
else:
location -= 1
if maxValue == value:
return location + 1
else:
priorities.pop(0)
poped += 1
return
예외 생각나는대로 풀이를 수정하다보니 더러워졌다. 대략 절반정도만 통과함
여기서 고치다가 더 헷갈릴 것 같아 지우고 다시 풀었다.
def solution(priorities, location):
value = priorities[location]
answer = 0
while True:
while max(priorities) > priorities[0]:
priorities.append(priorities.pop(0))
if location == 0:
location = len(priorities) - 1
else:
location -= 1
if max(priorities) == value and location == 0:
return answer + 1
priorities.pop(0)
answer += 1
location -= 1
통과했다.
이전에 location을 pop된 priorities의 기준으로 하지 않고
처음 길이 기준으로 했었더니 헷갈려서 과부하가 왔었다.
이번엔 정말 말 뜻대로 location으로 사용했더니 좀 덜 헷갈렸다.
다시 보니 if maxValue == value: 의 조건문에서 틀렸던 듯 하다.
maxValue가 value면서 location의 위치가 0이어야 했는데 location을 다르게 쓰다보니 생각 못했던 것 같다.
앞으로는 좀 더 직관적으로 변수를 활용해야겠다.
+ deque를 활용하면 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
나도 저렇게 짝지어서 location을 저장시키고 싶었는데 문법 짬이 부족해서 직접 했다,,,
배울 점
1. enumerate를 활용해 location과 priorities 짝으로 저장. 코드가 간단해짐
2. any: () 중 하나만 참이어도 True를 반환함
'알고리즘 스터디' 카테고리의 다른 글
[프로그래머스] 완전탐색 3. 카펫 (2) | 2021.03.14 |
---|---|
[프로그래머스] 완전탐색 2. 소수 찾기 (0) | 2021.03.14 |
[프로그래머스] 스택/큐 3. 기능개발 (0) | 2021.03.04 |
[프로그래머스] 정렬 3. H-Index (0) | 2021.02.28 |
[프로그래머스] 스택/큐 1. 다리를 지나는 트럭 (0) | 2021.02.28 |