-
[프머] 코딩테스트연습/ 스택, 큐/ 프린트하면서 이런이런것을 공부했다[연구노트]/알고리즘 공부 2020. 3. 18. 17:42
문제 : [https://programmers.co.kr/learn/courses/30/lessons/42587]
< 나의 코드 >
def solution(priorities, location): count = 1 waits = {} for i in range(len(priorities)): waits[i] = priorities[i] values = list(waits.values()) max_value = max(values) number_of_max = values.count(max_value) while(1): temp = next(iter(waits.items())) key_first, value_first = temp[0], temp[1] if value_first == max_value: if key_first == location: answer = count break else: del waits[key_first] count += 1 number_of_max -= 1 if number_of_max == 0 : while(1): max_value -= 1 number_of_max = values.count(max_value) if number_of_max > 0 : break else : del waits[key_first] waits[key_first] = value_first answer = 0 return answer
< 눈여겨 봐야할 다른 사람 코드 >
배운점 :
1. 주어진 변수를 잘 이용하자. 괜히 추가적인 변수를 만들면 복잡해 진다.
2. 다양한 방법을 다양하게 고민해보아라. 좀 더 쉬운 방법은 무조건 있다. 창의적으로 생각하라
4. key value도 매력적인 방법이지만, 튜플을 이용하는게 이해가 쉬울 수 있다.
## 1번째 def solution(p, l): ans = 0 m = max(p) while True: v = p.pop(0) if m == v: ans += 1 if l == 0: break else: l -= 1 m = max(p) else: p.append(v) if l == 0: l = len(p)-1 else: l -= 1 return ans ## 2번째 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
'하면서 이런이런것을 공부했다[연구노트] > 알고리즘 공부' 카테고리의 다른 글
[백준] 11047 동전 0 (0) 2020.03.30 [프머] 코딩테스트연습/ 스택, 큐/ 쇠막대기 (0) 2020.03.26 [프머] 코딩테스트 연습/스택, 큐/기능개발 (0) 2020.03.10 [프머] 2018 KAKAO BLIND RECRUITMENT 자동완성 (0) 2020.02.28 [백준] 16549 숨바꼭질 3 (0) 2020.02.18