๐ฅ Silver3
https://www.acmicpc.net/problem/1966
โ ์ ๋ตํ์ด
# ์ธ์=๋งจ์์์ ์ ๊ฑฐ์,
# list(stack)๋ pop(0)=O(n)
# Queue๋ popleft()=O(1) -> Queue ์ฌ์ฉ
# ์ฒซ๋ฒ์งธ ์์๊ฐ queue์์ max๊ฐ์ด์ฌ์ผ ์ถ๋ ฅ์ด ๊ฐ๋ฅ
import sys
from collections import deque
input=sys.stdin.readline
n=int(input())
find=False
for _ in range(n):
q=deque() #queue ์์ฑ
n,target=map(int,input().split())
priority=list(map(int,input().split()))
for idx,p in enumerate(priority):
q.append((idx,p)) #(index:์ฐ์ ์์)
result=0
while True:
# ์ฒซ๋ฒ์งธ ์์๊ฐ ํ์ฌ ํ์์ ๊ฐ์ฅ ํฐ ์ฐ์ ์์์ธ์ง ํ์ธ
max_priority=max(q,key=lambda x:x[1])[1]
first=q.popleft()
if first[1]==max_priority:
result+=1
#target ํ์ธ
if target==first[0]:
print(result)
break
else:
#๋ค๋ก๊ฐ๊ธฐ
q.append(first)
์ด ๋ฌธ์ ๋ ํ๋ก๊ทธ๋๋จธ์ค์ ํ๋ก์ธ์ค์ ๊ต์ฅํ ์ ์ฌํ ๋ฌธ์ ์ด๋ค.
์์ ์ ๊ทธ ๋ฌธ์ ๋ฅผ ํ๋ ์ด๋ ค์ํ๋๊ฑธ๋ก ๊ธฐ์ตํ๋๋ฐ.. ์ด๋ฒ์๋ ์ค๋๊ฑธ๋ ธ๋ค ๐ฃ
๊ทธ๋๋ dictionary๋ฅผ ์ ๋ค๋ฃจ์ง ๋ชปํด์ ๋ฐฐ์ด์ ์ฌ์ฉํ๊ณ , jsํน์ฑ์ queue๊ฐ ์๋ ํํ๋ก ํ์๋ค.
์ด๋ฒ์๋ ์ฒ์์ ๋์ ๋๋ฆฌ๋ก ํ์ด๋ณผ๊น ํ์ง๋ง ๊ฐ์ ๋ฝ์์ ์ฌ์ฉํ๊ธฐ์ ์ฝ๋๊ฐ ๋๋ฌด ๋ณต์กํด์ ํํ๋ก ๋ณ๊ฒฝํ์๋ค.
์ด๋์ ํํ์ด ์๋๋ณด๋ค.. ์ด๊ฑฐ ํ์ด๋ณธ๋ค๋ก ํํ์ ์ ๊ทน ํ์ฉ์ค์ด๋ค ๐๐ป
์ฐพ๊ณ ์ํ๋ index๊ฐ ํ์์ ๋์ฌ๋๊น์ง ์ํ๋ฅผ ํด์ผํ๋ฏ๋ก while๋ฌธ์ ์ฌ์ฉํด์ฃผ๊ณ ,
ํ์ฌ ํ์์ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ํฐ ์๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์ฒ์์ for๋ฌธ์ ์ฌ์ฉํด๋ณด๋ ค๊ณ ํ์ง๋ง, ์ ๋์ ์ด๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์ง๊ธฐ๋ ์ด๋ ต๊ณ ๋ณต์กํ๋ค. ๋ค์ ํ๋ฒ ์๊ฐํด๋ณด๋, ์ถ๋ ฅํ ๊ธฐํ๊ฐ ์ฃผ์ด์ง๋ ์ฒซ๋ฒ์งธ์์๊ฐ ํ์ฌ ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ํฐ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋๊น์ง ์ถ๋ ฅ์ ํ ์๊ฐ ์๋ค.
๐๐ป max๋ฅผ ์ฌ์ฉํด ๊ฐ์ฅ ํฐ ์ฐ์ ์์๊ฐ ํ์ฌ ์ฒซ๋ฒ์งธ์์์ ์ผ์นํ๋ค๋ฉด, ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค.
๐๐ป target์ด ๋ช๋ฒ์งธ๋ก ์ถ๋ ฅ๋๋์ง๊ฐ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์, ์นด์ดํธ๋ฅผ ํด์ฃผ๋ค๊ฐ target์ ๋ง๋๊ฒ ๋๋ฉด ์ถ๋ ฅํด์ฃผ๊ณ , ์ข ๋ฃํ๋ฉด๋๋ค!
'๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค-Python] ๋จ์ด ์ ๋ ฌ : 1181๋ฒ (0) | 2024.06.07 |
---|---|
[๋ฐฑ์ค-Python] ํ์ ํ๋ ํ : 1021๋ฒ (0) | 2024.06.05 |
[๋ฐฑ์ค-Python] ํ์ ํฐ๋จ๋ฆฌ๊ธฐ : 2346๋ฒ (1) | 2024.06.05 |
[๋ฐฑ์ค-Python] ์ค๋ชฉ : 2615๋ฒ (0) | 2024.06.04 |
[๋ฐฑ์ค-Python] ์ค์์น ์ผ๊ณ ๋๊ธฐ : 1244๋ฒ (1) | 2024.06.04 |