π λ°±μ€ 1021 - νμ νλ ν
λ°±μ€ 1021 - νμ νλ ν
π‘ λμ νμ΄
μ²μμλ ν λ²μ 2λ² μ°μ° νΉμ 3λ² μ°μ°μ λ°λ‘λ°λ‘ μ§ννκ³ λ μ€ μμ κ°μ μΆλ ₯νλ 건 μ€ μμλλ°, arr
μ λ³΄κ³ λ κ°κΉμ΄ μͺ½μ 2λ² μ°μ°, 3λ² μ°μ°μ νλ¨ν΄μ νμ΄μΌ νλ λ¬Έμ μλ€. 머리λ‘λ μ΄ν΄νλλ° λ§μ ꡬννλ €λκΉ μ λ μ€λ₯΄μ§ μμλ€. κ²°κ΅, ν¨μλ₯Ό μ μΈνμ¬ νμμ§λ§ μ μ§ μ½λκ° λ§μ 보μλ€.
- νμ¬
arr
μ 보κ³target
κ°μ μ / λ€μμλΆν° λͺ λ²μ§Έ λ¨μ΄μ Έμλμ§ κ³μ°ν indexλ₯Όreturn
νλ€.(compare_min_length)
- μμͺ½μ΄ λ κ°κΉμ°λ©΄
2λ² μ°μ°
μ μ§ννλ€.(front_rotate)
- λ€μͺ½μ΄ λ κ°κΉμ°λ©΄
3λ² μ°μ°
μ μ§ννλ€.(back_rotate)
λ€λ₯Έ μ¬λμ μ½λλ₯Ό 보λκΉ 2, 3λ² μ°μ°
μ κΈ°λ₯μ ꡬννμ§ μμλ python - deque
λΌμ΄λΈλ¬λ¦¬μλ rotate
λ΄μ₯ ν¨μκ° κ΅¬νλμ΄μμλ€. λ€μλ²μ κΌ μ¨λ¨ΉμΌλ¦¬λΌ..
κ·Έλ¦¬κ³ λ€λ₯Έ μ¬λμ for
λ¬Έ μμ while
λ¬Έμ λ£μ΄ μμ±νλλ° μ½λλ μ§§κ³ κ°λ
μ±μ΄ μ’μ 보μλ€. μλ‘ λ°°μ΄ μ μ arr
μ κΈΈμ΄λ₯Ό κΈ°μ€μΌλ‘ target_index
κ° μμͺ½μμ κ°κΉμ΄μ§ λ€μͺ½μμ λ κ°κΉμ΄μ§ νλ¨νλ 15λ² μ½λμΈλ° κ°κ²°ν΄ 보μλ€. λ, rotate(-1)
μ 2λ² μ°μ°μ΄κ³ rotate(1)
μ 3λ² μ°μ°μ΄λ€.
# λμ μ½λ
from collections import deque
n, m = map(int, input().split())
target_indexes = list(map(int, input().split()))
cnt = 0
arr = deque([i for i in range(1, n+1)])
def compare_min_length(target):
global arr
for i in range(len(arr)):
if arr[i] == target:
return i, len(arr)-i-1
def front_rotate(target, cnt): # μΌμͺ½μΌλ‘ μ΄λ
global arr
while True:
if arr[0] == target:
arr.popleft()
return cnt
arr.append(arr.popleft())
cnt += 1
def back_rotate(target, cnt): # μ€λ₯Έμͺ½μΌλ‘ μ΄λ
global arr
while True:
if arr[0] == target:
arr.popleft()
return cnt
arr.appendleft(arr.pop())
cnt += 1
for target in target_indexes:
front, back = compare_min_length(target)
if front <= back:
temp_cnt = front_rotate(target, cnt)
else:
temp_cnt = back_rotate(target, cnt)
cnt = temp_cnt
print(cnt)
# λ€λ₯Έμ¬λμ μ½λ
from collections import deque
n, m = map(int, input().split())
target_indexes = list(map(int, input().split()))
cnt = 0
arr = deque([i for i in range(1, n+1)])
for target in target_indexes:
while True:
if arr[0] == target:
arr.popleft()
break
else:
if arr.index(target) <= len(arr) // 2:
arr.rotate(-1)
else:
arr.rotate(1)
cnt += 1
print(cnt)
'Algorithm > λ°±μ€(BOJ)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ νμ΄μ¬(python) ] λ°±μ€ 1620 - λλμΌ ν¬μΌλͺ¬ λ§μ€ν° μ΄λ€μ (2) | 2021.06.28 |
---|---|
[ νμ΄μ¬(python) ] λ°±μ€ 17608 - λ§λκΈ° (2) | 2021.06.28 |
[ νμ΄μ¬(python) ] λ°±μ€ 13335 - νΈλ (6) | 2021.06.25 |
[ νμ΄μ¬(python) ] λ°±μ€ 1966 - νλ¦°ν° ν (0) | 2021.06.24 |
[ νμ΄μ¬(python) ] λ°±μ€ 2563 - μμ’ μ΄ (0) | 2021.06.23 |
λκΈ