μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- μ΄νκ³μ
- 컴곡μ
- νλ‘κ·Έλλ°
- μκ³ λ¦¬μ¦
- 리μ‘νΈ
- λ°±μ€νμ΄
- ChatGPT
- μλ£κ΅¬μ‘°
- μΉκ°λ°κΈ°λ‘
- μ°μ μμν
- λ¨μν μ€νΈ
- νμ΄μ¬
- 그리λμκ³ λ¦¬μ¦
- 리μ‘νΈλ€μ΄ν°λΈ
- λͺ¨λ°μΌμ±νλ‘κ·Έλλ°
- boj11653
- 그리λ
- μ»΄ν¨ν°κ³΅ν
- 컴곡
- μΉκ°λ°
- νλ‘ νΈμ€λ
- λ°±μ€
- κ°λ°μ
- μ½λ©
- μ€νλ§
- λ°±μ€1436
- μ½λ©ν μ€νΈ
- SSE
- λ°±μλ
- spring
- Today
- Total
π»ππ§π
BOJ 1461 : λμκ΄ (Python) λ³Έλ¬Έ
λ¬Έμ
https://www.acmicpc.net/problem/1461
1461λ²: λμκ΄
μΈμ€μ΄λ λμκ΄μμ μΌνλ€. λμκ΄μ κ°λ°©μκ°μ΄ λλμ μΈμ€μ΄λ μ¬λλ€μ΄ λ§κ΅¬ λμ μ± μ λ€μ κ°μ Έλ€ λμμΌ νλ€. μΈμ€μ΄λ νμ¬ 0μ μκ³ , μ¬λλ€μ΄ λ§κ΅¬ λμ μ± λ μ λΆ 0μ μλ€. κ° μ±
www.acmicpc.net
μ½λ
νμ΄μ λ Όλ¦¬λ λ§μΌλ νλ¦° μ½λμ΄λ€. νλ¦° μ΄μ μ μ λ΅ μ½λλ κ°μ₯ μλμμ !
import sys
from collections import deque
n, k = map(int,sys.stdin.readline().split())
init = list(map(int,sys.stdin.readline().split()))
init.sort()
array = deque(init)
count = 0
pivot = -1
diff = max(abs(array[0]),abs(array[len(array)-1]))
for i in range(len(array)-1):
if array[i]<0 and array[i+1]>0:
pivot = i
break
i = len(array)-1
while i > pivot:
count += abs(array[len(array)-1]) * 2
for j in range(k):
i -= 1
array.pop()
if i<=pivot:
break
i = 0
while i <= pivot:
count += abs(array[0]) * 2
for j in range(k):
i += 1
array.popleft()
if i > pivot:
break
print(count-diff)
νμ΄
init 리μ€νΈμ μ± μμΉ κ°μ λ£μ΄μ sort νλ€. κ·Έλ¦¬κ³ init 리μ€νΈλ₯Ό deque λ‘ λ³νν κ²μ΄ arrayμ΄λ€.
β pop()κ³Ό popleft()λ₯Ό μ΄μ©νκΈ° μν΄μ
β» κ΅³μ΄ popleft()λ₯Ό μ°κΈ° μν΄ dequeμΌλ‘ λ³ννκΈ° 보λ€λ μμ, μμ 리μ€νΈλ₯Ό λλμ΄μ μμλ sortλ₯Ό reverseλ‘ νλ©΄ λ μ΄ν΄νκΈ° μ¬μΈ κ² κ°λ€.
# pivot = -1 (pivot μ΄κΈ°κ°μ -1λ‘ μ€μ )
for i in range(len(array)-1):
if array[i]<0 and array[i+1]>0:
pivot = i
break
μμμ μμλ₯Ό ꡬλΆνκΈ° μν΄μ pivot κ°μ μ€μ νλ€.
μλ₯Ό λ€μ΄ 리μ€νΈμ -5 -4 -3 6 7 μ΄ μμΌλ©΄ pivotμ 2(-3μ΄ μλ μΈλ±μ€)κ° λλ€. β μ μ«μμ μΈλ±μ€λ₯Ό κΈ°μ€μΌλ‘ ν¨
diff = max(abs(array[0]),abs(array[len(array)-1]))
κ°μ₯ λ©λ¦¬ μλ μ± μ μ볡νλ©΄ μν΄μ΄λ―λ‘ λ§μ§λ§μ μ 리νκ³ λλ΄λ κ²μ΄ μ΄λμ΄λ€.
κ·Έλμ μ΄κΈ°μ diff λ³μμ array μ€μμ μ λκ°μ΄ κ°μ₯ ν° κ°μ μ μ₯ν΄λλ€.
arrayλ μ λ ¬μ΄ λΌ μλ μνμ΄λ―λ‘ κ°μ₯ μΌμͺ½μ μ λκ°κ³Ό κ°μ₯ μ€λ₯Έμͺ½μ μ λκ°λ§ λΉκ΅λ₯Ό νλ©΄ λλ€.
i = len(array)-1
while i > pivot:
count += abs(array[len(array)-1]) * 2
for j in range(k):
i -= 1
array.pop()
if i<=pivot:
break
λ¨Όμ pivotμ μ€λ₯Έμͺ½μ μλ μμλΆν° μμνλ€. (μμ μμ)
κ°μ₯ μ€λ₯Έμͺ½μμλΆν° μΌμͺ½μΌλ‘ μ§νλλ€.
count μ ν΄λΉ μΈλ±μ€μ μλ μμμ μ λκ°μ μ μ₯ν ν forλ¬Έμ μ΄μ©ν΄ μΈμ€μ΄κ° λ€ μ μλ μ± κΆμλ§νΌμ μμλ₯Ό ν¨μ€νλ€.
β λ λ©λ¦¬ μλ μ± μ κ½μλκ³ μμ μΌλ‘ λμμ€λ κΈΈμ ν¨κ» λ€κ³ μ¨ μ± λ€μ μ 리νλ©΄μ μ¬ μ μκΈ° λλ¬Έμ΄λ€.
pivotμ μΌμͺ½μ μλ μμλ λ§μ°¬κ°μ§λ‘ μ§ννλ€. (μμ μμ)
μ΄λ²μλ κ°μ₯ μΌμͺ½μμλΆν° μ€λ₯Έμͺ½μΌλ‘ μ§ννλ€. β μ λκ°μ΄ ν° μμλλ‘μ
μ μ½λκ° νλ¦° μ΄μ μ μ λ΅ μ½λ
import sys
from collections import deque
n, k = map(int,sys.stdin.readline().split())
init = list(map(int,sys.stdin.readline().split()))
init.sort()
array = deque(init)
count = 0
pivot = -1
diff = max(abs(array[0]),abs(array[len(array)-1]))
for i in range(len(array)-1):
if array[i]<0 and array[i+1]>0:
pivot = i
break
i = len(array)-1
#μλμ ifλ¬Έμ λ£μ΄μ€μΌ μ€λ₯ λ°μ X
if pivot== -1 and array[0] < 0:
pivot = len(array)-1
while i > pivot:
count += abs(array[len(array)-1]) * 2
for j in range(k):
i -= 1
array.pop()
if i<=pivot:
break
i = 0
while i <= pivot:
count += abs(array[0]) * 2
for j in range(k):
i += 1
array.popleft()
if i > pivot:
break
print(count-diff)
μ 체 μ«μκ° μμμΈ κ²½μ°μμ μλ μ½λλΌλ©΄ pivotμ -1λ‘ κ·Έλλ‘ λ¨μμμ΄μ while i > pivot μ κ±°μ³μΌνλλ° μ΄ whileλ¬Έμ μλ μμ μμΉλ€μ μν κ²μ΄λ―λ‘ μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘ μ§ννλ€. μ΄μ λ°ν΄ μμλ€μ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ μ§νν΄μΌνλ―λ‘ μ€λ₯κ° λ°μν κ²μ΄λ€.
κ·Έλμ pivot μ΄ -1 μ΄κ³ arrayμ 첫 μμκ° μμλΌλ©΄ (== μ± μ μμΉκ° λͺ¨λ μμλΌλ©΄) pivotμ len(array)-1 λ‘ λ³κ²½ν΄μ 첫λ²μ§Έ whileλ¬Έμ κ±°μΉμ§ μκ³ μλμ whileλ¬Έμμ μ§νν μ μλλ‘ νλ€.
'μκ³ λ¦¬μ¦ > λ°±μ€ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
BOJ 1041 : μ£Όμ¬μ (Python) (0) | 2023.02.15 |
---|---|
BOJ 11000 : κ°μμ€ λ°°μ (Python) (0) | 2023.02.15 |
BOJ 9251 : LCS (Python) (0) | 2023.02.07 |
BOJ 2631 : μ€μΈμ°κΈ° (Python) (0) | 2023.02.06 |
BOJ 11053 : κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄ (Python) (0) | 2023.02.06 |