๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/๊ตฌํ˜„

[๋ฐฑ์ค€]1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ

by syLim___ 2023. 4. 30.
728x90

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

 

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

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

www.acmicpc.net


queue๋ฅผ ๋‘ ๊ฐœ ์‚ฌ์šฉํ–ˆ๋‹ค!

data์—๋Š” ๊ฐ ๋ฌธ์„œ์˜ ์ค‘์š”๋„๋ฅผ, numbers์—๋Š” ๋ฌธ์„œ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜์˜€๋‹ค.

 

python

 

from collections import deque
import sys
input = sys.stdin.readline

test = int(input())
for _ in range(test):
    n,m = map(int,input().split())
    data = deque(map(int,input().split())) # ์ค‘์š”๋„
    numbers = deque([i for i in range(n)]) # ์š”์ฒญ ์ˆœ์„œ

    cnt = 0 # ์ธ์‡„๋ ๋•Œ๋งˆ๋‹ค ์ฆ๊ฐ€
    prior = 9 # ์ค‘์š”๋„
    while len(data) > 0:
      
      # ์ค‘์š”๋„๋ฅผ ๋‚จ์€ ๋ฌธ์„œ๋“ค ์ค‘ ์ตœ๊ณ  ์ค‘์š”๋„๋กœ ์—…๋ฐ์ดํŠธ
      while True:
        if prior in data:
          break
        else:
          prior -= 1

      # ํ์˜ front ๋ถ€๋ถ„์„ popํ•˜๊ธฐ
      tempd, tempn = data.popleft(), numbers.popleft()

      # popํ•œ ๋ฌธ์„œ๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ํฐ ๋ฌธ์„œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด,
      # cnt๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ
      if tempd == prior:
        cnt += 1
        # popํ•œ ๋ฌธ์„œ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๊ถ๊ธˆํ•ดํ•˜๋Š” ๋ฌธ์„œ๋ผ๋ฉด, ๋ฃจํ”„๋ฅผ ๋น ์ ธ๋‚˜์˜ค๊ธฐ
        if tempn == m:
          break
      # popํ•œ ๋ฌธ์„œ๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ํฐ ๋ฌธ์„œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด,
      # ํ์˜ rear์— ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ
      else:
        data.append(tempd)
        numbers.append(tempn)

    # cnt ์ถœ๋ ฅ
    print(cnt)
728x90