[λ°±μ€/python] 1021λ² : νμ νλ ν
λ¬Έμ
μ§λ―Όμ΄λ Nκ°μ μμλ₯Ό ν¬ν¨νκ³ μλ μλ°©ν₯ μν νλ₯Ό κ°μ§κ³ μλ€. μ§λ―Όμ΄λ μ΄ νμμ λͺ κ°μ μμλ₯Ό λ½μλ΄λ €κ³ νλ€.
μ§λ―Όμ΄λ μ΄ νμμ λ€μκ³Ό κ°μ 3κ°μ§ μ°μ°μ μνν μ μλ€.
- 첫 λ²μ§Έ μμλ₯Ό λ½μλΈλ€. μ΄ μ°μ°μ μννλ©΄, μλ νμ μμκ° a1, ..., akμ΄μλ κ²μ΄ a2, ..., akμ κ°μ΄ λλ€.
- μΌμͺ½μΌλ‘ ν μΉΈ μ΄λμν¨λ€. μ΄ μ°μ°μ μννλ©΄, a1, ..., akκ° a2, ..., ak, a1μ΄ λλ€.
- μ€λ₯Έμͺ½μΌλ‘ ν μΉΈ μ΄λμν¨λ€. μ΄ μ°μ°μ μννλ©΄, a1, ..., akκ° ak, a1, ..., ak-1μ΄ λλ€.
νμ μ²μμ ν¬ν¨λμ΄ μλ μ Nμ΄ μ£Όμ΄μ§λ€. κ·Έλ¦¬κ³ μ§λ―Όμ΄κ° λ½μλ΄λ €κ³ νλ μμμ μμΉκ° μ£Όμ΄μ§λ€. (μ΄ μμΉλ κ°μ₯ μ²μ νμμμ μμΉμ΄λ€.) μ΄λ, κ·Έ μμλ₯Ό μ£Όμ΄μ§ μμλλ‘ λ½μλ΄λλ° λλ 2λ², 3λ² μ°μ°μ μ΅μκ°μ μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ νμ ν¬κΈ° Nκ³Ό λ½μλ΄λ €κ³ νλ μμ κ°μ Mμ΄ μ£Όμ΄μ§λ€. Nμ 50λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄κ³ , Mμ Nλ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€. λμ§Έ μ€μλ μ§λ―Όμ΄κ° λ½μλ΄λ €κ³ νλ μμ μμΉκ° μμλλ‘ μ£Όμ΄μ§λ€. μμΉλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , Nλ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λ¬Έμ μ μ λ΅μ μΆλ ₯νλ€.
μ λ΅
from collections import deque
N, M = map(int, input().split())
number = list(map(int, input().split()))
answer = 0
deq = deque()
for i in range(1, N + 1):
deq.append(i)
for n in number:
idx = deq.index(n)
if idx == 0:
deq.popleft()
else:
if idx < len(deq) - idx:
answer += idx
deq.rotate(-idx)
deq.popleft()
else:
answer += len(deq) - idx
deq.rotate(len(deq) - idx)
deq.popleft()
print(answer)
dequeλ₯Ό νμ©νλ©΄ μ½κ² ν μ μλ€.
deq = deque()
for i in range(1, N + 1):
deq.append(i)
deqμ 1λΆν° NκΉμ§μ μ«μλ₯Ό μ μ₯νλ€.
for n in number:
idx = deq.index(n)
if idx == 0:
deq.popleft()
else:
if idx < len(deq) - idx:
answer += idx
deq.rotate(-idx)
deq.popleft()
else:
answer += len(deq) - idx
deq.rotate(len(deq) - idx)
deq.popleft()
μ°ΎμΌλ €λ μ«μμ μΈλ±μ€λ₯Ό idxμ μ μ₯νκ³
μ°ΎμΌλ €λ μ«μκ° deqμ 맨 μμ μμΌλ©΄(idx==0) μ΄λν νμκ° μμΌλ―λ‘ deqμμ κΊΌλ΄μ€λ€.
μ°ΎμΌλ €λ μ«μλ‘ μ΄λνκΈ°κΉμ§ μμμ μ΄λνλκ² λΉ λ₯Έμ§(idx), λ€μμ μ΄λνλκ² λΉ λ₯Έμ§(len(deq)-idx)
λΉκ΅ν ν λ λΉ λ₯Έμͺ½μΌλ‘ deqλ₯Ό rotateνλ€.
rotateν μ λκ° μ΄λν μ λμ΄λ―λ‘ answerμ μ μ₯νκ³ λ§¨μμ nμ΄ μμμΌλ―λ‘ deqμμ κΊΌλ΄μ€λ€.
popleft(), rotate() λ± dequeμ μμΈν λ΄μ©μ μλμ ν¬μ€ν μ μ°Έκ³ νλ©΄ λλ€.
2021.03.19 - [πμκ³ λ¦¬μ¦/π κ°λ μ 리] - [νμ΄μ¬/python] ν (Queue)
'πμκ³ λ¦¬μ¦ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/python] 2839λ² : μ€ν λ°°λ¬ (0) | 2021.03.16 |
---|---|
[λ°±μ€/python] 1316λ² : κ·Έλ£Ή λ¨μ΄ 체컀 (0) | 2021.03.16 |
[λ°±μ€/python] 1874λ² : μ€ν μμ΄ (0) | 2021.03.12 |
[λ°±μ€/python] 4949λ² : κ· νμ‘ν μΈμ (0) | 2021.03.12 |
[λ°±μ€/python] 11651λ² : μ’ν μ λ ¬νκΈ° 2 (0) | 2021.03.11 |