개발/알고리즘
20200630 programmers print
서울시민n년차
2020. 6. 30. 02:45
def max_count(priorities):
max_num = 0
max_idx = 0
length = len(priorities)
for i in range(length):
if priorities[i] > max_num:
max_num = priorities[i]
max_idx = i
return max_num, max_idx
def solution(priorities, location):
answer = 0
while True:
max_num, max_idx = max_count(priorities)
if location > max_idx:
priorities = priorities[max_idx+1:] + priorities[:max_idx]
location = location - max_idx - 1
answer += 1
continue
elif location < max_idx:
priorities = priorities[max_idx+1:] + priorities[:max_idx]
location = len(priorities) + location - max_idx
answer += 1
continue
else:
answer += 1
break
return answer
옛날에 생각했었던 풀이는 아래와 같다.
def solution(priorities, location):
cnt = 0
answer = 0
cycle = 0
finished = 0
while finished == 0:
if priorities[0] == max(priorities):
answer += 1
priorities.pop(0)
if cnt == location + cycle:
finished = 1
cnt += 1
else:
priorities.append(priorities.pop(0))
if cnt == location + cycle:
cycle += len(priorities)
cnt += 1
return answer