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
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]17478๋ฒ: ์ฌ๊ทํจ์๊ฐ ๋ญ๊ฐ์? (0) | 2023.05.04 |
---|---|
[๋ฐฑ์ค]4673๋ฒ: ์ ํ ๋๋ฒ (0) | 2023.05.01 |
[๋ฐฑ์ค]2108๋ฒ: ํต๊ณํ (0) | 2023.04.27 |
[๋ฐฑ์ค]1475๋ฒ: ๋ฐฉ ๋ฒํธ (0) | 2023.04.24 |
[๋ฐฑ์ค] 1316๋ฒ: ๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค (0) | 2023.04.19 |