20200630 programmers print
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
'개발 > 알고리즘' 카테고리의 다른 글
20200914 - 심심해서 쓰는 글 - 난수 생성 알고리즘 (0) | 2020.09.16 |
---|---|
20200625 Leetcode two sum python solution (0) | 2020.06.25 |