-
[λ°±μ€] 1021 νμ νλ ν with PythonPS 2022. 1. 31. 00:21728x90λ°μν
π BOJ 1021 νμ νλ ν
π‘ 쑰건
Nκ°μ μμλ₯Ό ν¬ν¨νκ³ μλ μλ°©ν₯ μν ν
- 1 <= N <= 50
νμμ λ€μκ³Ό κ°μ 3κ°μ§ μ°μ°μ μνν μ μλ€.
- 첫 λ²μ§Έ μμλ₯Ό λ½μλΈλ€. μ΄ μ°μ°μ μννλ©΄, μλ νμ μμκ° a1, ..., akμ΄μλ κ²μ΄ a2, ..., akμ κ°μ΄ λλ€.
- μΌμͺ½μΌλ‘ ν μΉΈ μ΄λμν¨λ€. μ΄ μ°μ°μ μννλ©΄, a1, ..., akκ° a2, ..., ak, a1μ΄ λλ€.
- μ€λ₯Έμͺ½μΌλ‘ ν μΉΈ μ΄λμν¨λ€. μ΄ μ°μ°μ μννλ©΄, a1, ..., akκ° ak, a1, ..., ak-1μ΄ λλ€.
κ·Έ μμλ₯Ό μ£Όμ΄μ§ μμλλ‘ λ½μλ΄λλ° λλ 2λ², 3λ² μ°μ°μ μ΅μκ°μ μΆλ ₯νλ λ¬Έμ .
Queue, μλ£κ΅¬μ‘° μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin from collections import deque n, m = map(int, stdin.readline().split()) arr = list(map(int, stdin.readline().split())) q = deque() for i in range(1, n + 1): q.append(i) res = 0 for i in arr: while 1: if q[0] != i: if len(q) // 2 >= q.index(i): temp = q.popleft() q.append(temp) res += 1 else: q.appendleft(q.pop()) res += 1 else: q.popleft() break print(res)
π μμ λ° μ€νκ²°κ³Ό
μμ
32 6 27 16 30 11 6 23
μ€νκ²°κ³Ό
59
β¨οΈ λ¬Έμ νμ΄
νμ ν¬κΈ°λ§νΌ 1λΆν° NκΉμ§μ μλ₯Ό ν¬ν¨ν 리μ€νΈλ₯Ό λ§λ€μ΄μ€λ€.
κ²°κ³Όκ°μ μ μ₯ν res λ³μλ₯Ό 0μΌλ‘ μ΄κΈ°νν΄μ€λ€.
μΆμΆνλ €κ³ νλ μλ₯Ό μ μ₯ν arr λ₯Ό μννλ©΄μ break λͺ λ Ήμ΄ λ¨μ΄μ§ λ κΉμ§ while λ°λ³΅νλ€.
λ§μ½ νμ 첫λ²μ§Έ μμκ° λ½μλ΄λ €λ μμ μΌμΉ νλ κ²½μ°, λ°λ‘ μμλ₯Ό λ½μλΈ λ€ whileμ μ’ λ£νλ€
λ§μ½ νμ 첫λ²μ§Έ μμκ° λ½μλ΄λ €λ μμ μΌμΉ νμ§ μλ κ²½μ°,
- νμ κΈΈμ΄λ₯Ό 2λ‘ λλ λͺ«μ΄ νμμ λ½μ λ΄λ €λ κ°μ μΈλ±μ€λ³΄λ€ ν¬κ±°λ κ°λ€λ©΄ μΌμͺ½μμ μμλ₯Ό λ½μ μ€λ₯Έμͺ½μ λΆμΈλ€.
- νμ κΈΈμ΄λ₯Ό 2λ‘ λλ λͺ«μ΄ νμμ λ½μ λ΄λ €λ κ°μ μΈλ±μ€λ³΄λ€ μλ€λ©΄ μ€λ₯Έμͺ½μμ μμλ₯Ό λ½μ μΌμͺ½μ λΆμΈλ€.
πΎ λλμ
- python μ deque λ λ§€μ° κ°λ ₯νλ€.
- appendleftλ λκ³ λκ³ μΈ ν¨μμΌ κ² κ°λ€λ μκ°μ΄ λ€μμ΅λλ€.
λ°μν'PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1058 μΉκ΅¬ with Python (0) 2022.02.01 [λ°±μ€] 1026 보물 with Python (0) 2022.01.31 [λ°±μ€] 20291 νμΌ μ 리 with Python (2) 2022.01.26 [λ°±μ€] 14916 κ±°μ€λ¦λ with Python (0) 2022.01.26 [λ°±μ€] 14888 μ°μ°μ λΌμλ£κΈ° with Python (0) 2022.01.24