๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

[๋ฐฑ์ค€] [Python] 1966๋ฒˆ_ํ”„๋ฆฐํ„ฐ ํ_ํ,๋ฑ

Dbswnstjd 2022. 10. 14. 22:14

๋ฌธ์ œ

https://www.acmicpc.net/problem/1966

 

1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ

์—ฌ๋Ÿฌ๋ถ„๋„ ์•Œ๋‹ค์‹œํ”ผ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋ฆฐํ„ฐ ๊ธฐ๊ธฐ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ธ์‡„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์ธ์‡„ ๋ช…๋ น์„ ๋ฐ›์€ ‘์ˆœ์„œ๋Œ€๋กœ’, ์ฆ‰ ๋จผ์ € ์š”์ฒญ๋œ ๊ฒƒ์„ ๋จผ์ € ์ธ์‡„ํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์„œ๊ฐ€ ์Œ“์ธ๋‹ค๋ฉด Queue ์ž๋ฃŒ๊ตฌ์กฐ์—

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 1966๋ฒˆ ๋ฌธ์ œ - ํ”„๋ฆฐํ„ฐ ํ 
from collections import deque
import sys
t = int(input())

for i in range(t):
    n, m = map(int, input().split())
    queue = deque(list(map(int, sys.stdin.readline().split())))
    count = 0
    while queue:
        best = max(queue) # ํ˜„์žฌ์˜ ์ตœ๋Œ“๊ฐ’์ด ๊ฐ€์žฅ ๋จผ์ € ๋ฐฐ์ถœ๋˜๋ฏ€๋กœ ์ตœ๋Œ“๊ฐ’์„ ์ €์žฅ
        front = queue.popleft() # ํ์˜ front๋ฅผ ๋ฝ‘์•˜์œผ๋ฏ€๋กœ
        m -= 1 # ๋‚ด ์œ„์น˜๊ฐ€ ํ•œ ์นธ ๋‹น๊ฒจ์ง„๋‹ค. 
        
        if best == front: # ๋ฝ‘์€ ์ˆซ์ž๊ฐ€ ์ œ์ผ ํฐ ์ˆซ์ž์ผ ๋•Œ
            count += 1 # ํ•˜๋‚˜๊ฐ€ ์˜์›ํžˆ ๋ฐฐ์ถœ๋˜๋ฏ€๋กœ ์ˆœ๋ฒˆ ํ•˜๋‚˜ ์ถ”๊ฐ€
            if m < 0: # m์ด 0์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฝ‘์€ ์ˆซ์ž๊ฐ€ ๋‚ด ์ˆซ์ž๋ผ๋Š” ๋œป.
                print(count)
                break
        
        else:   # ๋ฝ‘์€ ์ˆซ์ž๊ฐ€ ์ œ์ผ ํฐ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด
            queue.append(front) # ์ œ์ผ ๋’ค๋กœ ๋ฐ€๋ ค๋‚˜๊ฒŒ ๋จ
            if m < 0:   # ์ œ์ผ ์•ž์—์„œ ๋ฝ‘ํžˆ๋ฉด
                m = len(queue) - 1  # ์ œ์ผ ๋’ค๋กœ ์ด๋™