[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค-Lv2] ํ”„๋ฆฐํ„ฐ / Python

๐Ÿ“š Problem Solving/Programmers

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํ”„๋ฆฐํ„ฐ

์ผ๋ฐ˜์ ์ธ ํ”„๋ฆฐํ„ฐ๋Š” ์ธ์‡„ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ฌธ์„œ๊ฐ€ ๋‚˜์ค‘์— ์ธ์‡„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ธ์‡„ํ•˜๋Š” ํ”„๋ฆฐ

programmers.co.kr

import sys

input = sys.stdin.readline

priorities = list(map(int, input().split()))
location = int(input())


def solution(priorities, location):
    priorities = [(priorities[x], x) for x in range(len(priorities))]
    answer = 0
    while True:
        if priorities[0][0] == max(priorities)[0] and priorities[0][1] == location:
            answer += 1
            break
        if priorities[0][0] < max(priorities)[0]:
            num, idx = priorities.pop(0)
            priorities.append((num, idx))
        else:
            answer += 1
            priorities.pop(0)
    return answer


print(solution(priorities, location))

 

ํ•ด์„ค

๋ฆฌ์ŠคํŠธ์— priorities์˜ ๊ฐ’๊ณผ ์ธ๋ฑ์Šค๋กœ ํŠœํ”Œํ˜•์‹์œผ๋กœ ์ €์žฅํ•ด์ค€๋‹ค.

1) ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž ํŠœํ”Œ์— ์ €์žฅ๋œ ๊ฐ’์ด ๋ฆฌ์ŠคํŠธ์˜ ์ตœ๋Œ€์ด๋ฉด์„œ ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž ํŠœํ”Œ์— ์ €์žฅ๋œ ์ธ๋ฑ์Šค๊ฐ€ location๊ณผ ์ผ์น˜ํ•˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ค‘๋‹จํ•œ๋‹ค.

2) ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž ํŠœํ”Œ์— ์ €์žฅ๋œ ๊ฐ’์ด ๋ฆฌ์ŠคํŠธ์˜ ์ตœ๋Œ€๋ณด๋‹ค ์ž‘์œผ๋ฉด ํŠœํ”Œ์— ์ €์žฅ๋œ ๊ฐ’๊ณผ ์ธ๋ฑ์Šค๋ฅผ pop์‹œํ‚ค๊ณ  ๋‹ค์‹œ append ์‹œํ‚จ๋‹ค.

3) ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ํŠœํ”Œ์— ์ €์žฅ๋œ ๊ฐ’์ด ์ตœ๋Œ€์ด๋ฉด ์ œ๊ฑฐํ•œ๋‹ค.