[๋ฌธ์ ๋งํฌ] ๐https://www.acmicpc.net/problem/1021
ํ์ด
๐ก ์นด๋์ ์ ๋ฐ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ ๋ฅผ ํผ๋ค.
๋นผ๋ด๋ ค๋ ์นด๋๊ฐ ์ค๊ฐ ๋ณด๋ค ์ผ์ชฝ์ ์์ ๋ 2๋ฒ ์ฐ์ฐ์ ํ๋ค.
n_deq.rotate(-1)
- ํ๋ฅผ ์ผ์ชฝ์ผ๋ก 1๋งํผ ํ์
๋ฐ๋๋ก ๋นผ๋ด๋ ค๋ ์นด๋๊ฐ ์ค๊ฐ ๋ณด๋ค ์ค๋ฅธ์ชฝ์ ์์ ๋ 3๋ฒ ์ฐ์ฐ์ ํ๋ค.
n_deq.rotate(1)
- ํ๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก 1๋งํผ ํ์
Solution
from collections import deque
n, m = map(int, input().split())
pop_num = list(map(int, input().split()))
n_deq = deque()
for i in range(1, n + 1):
n_deq.append(i)
result = 0
for i in pop_num:
while n_deq[0] != i:
if n_deq.index(i) == 0: # 0๋ฒ ์ธ๋ฑ์ค๊ฐ ๋นผ๋ด๋ ค๋ ์๋ ๊ฐ์ ๋๊น์ง
n_deq.popleft()
elif n_deq.index(i) <= len(n_deq) // 2: # ์ค๊ฐ๋ณด๋ค ์ดํ์ผ ๋ ์ผ์ชฝ์ผ๋ก
n_deq.rotate(-1) # 1๋งํผ ์ผ์ชฝ์ผ๋ก ํ์ (๋ฐ์๊ณ)
result += 1
else:
n_deq.rotate(1) # 1๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ (์๊ณ)
result += 1
print(result)
์ ์ฝ๋์ ๊ฐ์ ์ฌํญ
- while n_deq[0] != i ์กฐ๊ฑด ์ฌ์ฉ
- ๋ฑ์ ์ฒซ ๋ฒ์งธ ์์๊ฐ i๊ฐ ๋ ๋๊น์ง ํ์ ํ์ฌ ๋ฑ์ ์ ๋ ฌํ์ง ์๊ณ ํ์ํ ํ์ ๋ง ์ํ
- ๋ถํ์ํ index() ํธ์ถ ์ ๊ฑฐ
- ๋ฑ์ ์ง์ ํ์ธํ์ฌ ํ์ ๋ฐฉํฅ์ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ n_deq.index(i)์ ๋ฐ๋ณต ํธ์ถ์ ํผํ ์ ์๋ค.
์ต์ ํ๋ ์ฝ๋
from collections import deque
n, m = map(int, input().split())
pop_num = list(map(int, input().split()))
# 1๋ถํฐ n๊น์ง์ ์ซ์๋ฅผ ๋ฑ์ ์ถ๊ฐ
n_deq = deque(range(1, n + 1))
result = 0
for i in pop_num:
while n_deq[0] != i: # ๋นผ๋ผ ์ซ์๊ฐ ์ฒซ ๋ฒ์งธ ์์น์ ์ค๋๋ก ํ์
if n_deq.index(i) <= len(n_deq) // 2: # ์ค๊ฐ๋ณด๋ค ์ผ์ชฝ์ ๊ฐ๊น์ฐ๋ฉด ์ผ์ชฝ ํ์
n_deq.rotate(-1)
else: # ์ค๋ฅธ์ชฝ์ ๊ฐ๊น์ฐ๋ฉด ์ค๋ฅธ์ชฝ ํ์
n_deq.rotate(1)
result += 1
n_deq.popleft() # ์ฒซ ๋ฒ์งธ ์์น์ ์์ผ๋ฉด ๋ฝ์๋ด๊ธฐ
print(result)
๐ฉ๐ป ํ๊ณ
์ ์ถ ์ ์ ํ ์คํธ ์ผ์ด์ค๋ก ๊ฒ์ฆ์ ํด๋ณด๋๋ฐ ์ณ์ ๊ฒฐ๊ณผ๊ฐ ์ ๋๋ก ๋์ค์ง ์์์๋ค. ์ต์๊ฐ์ผ๋ก ์ถ๋ ฅ์ด ์ ๋๊ณ ์์๋๋ฐ ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์๋ค. ์นด๋๋ฅผ ๋นผ๋ ์ฐ์ฐ์ด ์๊ธฐ ๋๋ฌธ์ ์นด๋์ ์๊ฐ ์ค์ด๋ค์ด ์นด๋๋ฅผ ์ ๋ฐ์ผ๋ก ๋๋ ๋ ํ์ฌ ์นด๋์ ์๋งํผ ๋๋ ์ผ ํ๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ ๋ ฅ๋ฐ์ ์นด๋ ์์ธ n ์ ์ ๋ฐ์ผ๋ก ๋๋๊ณ ์์ด์ ๊ฐ์ด ์ ๋๋ก ๋์ค์ง ์๊ณ ์์๋ ๊ฒ์ด์๋ค.
๋คํํ๋ ํ ์คํธ ์ผ์ด์ค๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ์์ด์ ์ ์ถ ์ ์ ์์ ํ๊ณ ์ํธ์ ์ฑ๊ณตํ ์ ์์์ง๋ง, ํ ๊ฐ์ ์ผ์ด์ค๋ง ์์๋ค๋ฉด ์๋ง ๊ฐํผ๋ฅผ ๋ชป ์ก์์ ๊ฒ ๊ฐ๋ค. ์ญ์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋ค์ด๋ณด๊ณ ์ฌ๋ฌ๋ฒ ๊ฒ์ฆํด๋ณด๋ ๊ณผ์ ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ] 2563. ์์ข ์ด (Python/๊ตฌํ/Silver 5) (0) | 2024.11.04 |
|---|---|
| [BOJ] 2002. ์ถ์ (Python/๊ตฌํ/Silver 2) (1) | 2024.10.29 |
| [BOJ] 2161. ์นด๋1 (Python/์๋ฃ๊ตฌ์กฐ/Silver 5) (0) | 2024.10.29 |
| BOJ 11723๋ฒ : ์งํฉ (Python/๊ตฌํ/Silver 5) (0) | 2024.03.12 |
| BOJ 9655๋ฒ : ๋ ๊ฒ์ (Python/๊ตฌํ, DP/Silver 5) (0) | 2024.03.10 |