728x90
๐ ๋ฐฑ์ค 1966 - ํ๋ฆฐํฐ ํ
โก๏ธ ๋์ ํ์ด
๋ฌธ์ ๊ฐ ์ ์ดํด๊ฐ ๋์ง ์์ 4 ~ 5๋ฒ ์ ๋ ๋ค์ ๋ดค๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ํ์ฌ index
์ ๋์ผํ ์ฐ์ ์์
๊ฐ์ด ์ ์ผ ํด ๋ cnt+=1
์ ํด์ฃผ๋ฉด ๋๋ค. ๋ค๋ฅธ ํ
์คํธ ์ผ์ด์ค๋ ๊ด์ฐฎ์๋๋ฐ ์ค๋ณต๋ ์ฐ์ ์์๊ฐ ์๋ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ๋ ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ค. ์์ ์
๋ ฅ 1 - ํ
์คํธ์ผ์ด์ค
์ค ์ ์ผ ๋ง์ง๋ง 1, 1, 9, 1, 1, 1
์ ์๋ก ๋ค์ด๋ณด์. (๊ทธ๋ฆผ, ๊ธ์จ ์ํด ๋ถํ๋๋ฆฝ์๋๋ค.)
- ์์ ๋ณด๋ค ๋์ ์ฐ์ ์์๊ฐ ์์ ๋๊น์ง ํ์ ํ๋ค.(์ด๋๋
cnt
๊ฐ ์ฌ๋ผ๊ฐ์ง ์๋๋ค. why? ์ธ์๋ฅผ ํ์ง ์์๊ธฐ ๋๋ฌธ) pop
ํ ์์น(๊ฐ์ฅ ์ฒซ ๋ฒ์งธ index)์ ์์นํ์ ๋ ํด๋น ๊ฐ์ ์ฐ์ ์์๊ฐ ์ ์ผ ๋๋ค๋ฉดpop
์ฒ๋ฆฌํ๊ณcnt+=1
ํด์ค๋ค.- 2๋ฒ ๊ณผ์ ์์ ๋ง์ฝ,
pop
๊ฐ์ด ๋ด๊ฐ ์ฐพ๊ณ ์๋target
์ด๋ฉด, ํด๋นcnt
๋ฅผ ์ถ๋ ฅํ๊ณ ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃ(break
)ํ๋ค.
์ฌ๋ด์ผ๋ก python - import PriorityQueue
๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํ๋๋ฐ ํ์ง ๋ชปํ๋๋ฐ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
PriorityQueue
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ์ฅ ๋ฎ์ ๊ฐ๋ถํฐ ์ถ๋ ฅํ๋ค. (์ด๋์ฐ์ ์์ * -1
์ผ๋ก ํด๊ฒฐํ๋ค.)PriorityQueue
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฐ์ ์์๊ฐ ๋์ผํ ๋ ์ฝ์ ์์์ ๋ฐ๋ผ ์์๊ฐ ๋ฐํ๋๋ค.(์ด ๋ถ๋ถ์ ํด๊ฒฐํ์ง ๋ชปํ๋๋ฐ, ํ๋ฆฐํฐ ํ ๋ฌธ์ ๋index
๊ฐ ๋์ผํ ๋์ฝ์ ์์
๊ฐ ์๋ ํ์ฌqueue
์ ๋ค์ด์๋ ๊ฐ ๊ทธ๋๋ก ์ถ๋ ฅ์ ํด์ผ ํ๋ค. ์ฌ๊ธฐ์ ๋ ์ข์ ์ ๊ทผ๋ฒ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๐ ๐)
T = int(input())
for _ in range(T):
n, m = map(int, input().split())
priority = list(map(int, input().split()))
index = [i for i in range(n)]
index[m] = 'target' # ๋ด๊ฐ ์ฐพ๊ณ ์ถ์ index
cnt = 0
while priority:
if priority[0] == max(priority): # ๋๋จธ์ง ๋ฌธ์๋ค๋ณด๋ค ์ค์๋๊ฐ ๋ ๋์ ๋ฌธ์๊ฐ ์๋ค๋ฉด
cnt += 1
if index[0] == 'target':
print(cnt)
break
priority.pop(0)
index.pop(0)
else:
priority.append(priority.pop(0))
index.append(index.pop(0))
๋ฐ์ํ
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 1021 - ํ์ ํ๋ ํ (0) | 2021.06.27 |
---|---|
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 13335 - ํธ๋ญ (6) | 2021.06.25 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2563 - ์์ข ์ด (0) | 2021.06.23 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 4458 - ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก (0) | 2021.06.22 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2292 - ๋ฒ์ง (0) | 2021.06.18 |
๋๊ธ