-
[λ°±μ€] 3151 ν©μ΄ 0 with PythonPS 2022. 6. 1. 01:22728x90λ°μν
π BOJ 3151 ν©μ΄ 0
π‘ 쑰건
- 1 β€ N β€ 10000
-10000 β€ Ai β€ 10000
- λνλ μ νν 3λͺ μΌλ‘ ꡬμ±λ νλ§ μ°Έκ°κ° κ°λ₯νλ€.
- μ½λ© μ€λ ₯μ΄ μ’μΌλ©΄ νμν¬κ° λ¨μ΄μ§κ³ , νμν¬κ° μ’μμλ‘ μ½λ© μ€λ ₯μ΄ λ¨μ΄μ§λ€. κ·Έλ¦¬κ³ μΆμ νκ³ μ νλ λνλ μ½λ© μ€λ ₯κ³Ό νμν¬ λͺ¨λκ° μ€μνλ€.
μΈ νμμ μ½λ© μ€λ ₯μ ν©μ΄ 0μ΄ λλ νμ λ§λ€κ³ μ νλ€.
- λνμ μΆμ ν μ μλ νμ μΌλ§λ λ§μ΄ λ§λ€ μ μλμ§λ₯Ό κ³μ°νμ¬λΌ.
- Nλͺ μ νμλ€μ μ½λ© μ€λ ₯ Aiκ° -10000λΆν° 10000μ¬μ΄μ μ μλ‘ μ£Όμ΄μ§ λ, ν©μ΄ 0μ΄ λλ 3μΈμ‘°λ₯Ό λ§λ€ μ μλ κ²½μ°μ μλ₯Ό ꡬνλ λ¬Έμ .
- μ΄λΆ νμ, ν¬ ν¬μΈν° μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin # μ΄λΆνμ n = int(stdin.readline()) arr = list(map(int, stdin.readline().split())) arr.sort() ans = 0 def solve(s, e, g): global ans max_idx = n while s < e: tmp = arr[s] + arr[e] if tmp < goal: s += 1 elif tmp == g: if arr[s] == arr[e]: ans += e - s else: if max_idx > e: max_idx = e while max_idx >= 0 and arr[max_idx - 1] == arr[e]: max_idx -= 1 ans += e - max_idx + 1 s += 1 else: e -= 1 for i in range(n - 2): start = i + 1 end = n - 1 goal = -arr[i] solve(start, end, goal) print(ans)
π μμ λ° μ€νκ²°κ³Ό
μμ
10 2 -5 2 3 -4 7 -4 0 1 -6
μ€νκ²°κ³Ό
6
ννΈ
μμμμ κ°λ₯ν μ°Έκ°μ κ·Έλ£Ήμ μλμ κ°λ€.
(2, -5, 3), (2, 2, -4), (2, 2, -4), (-5, 2, 3), (3, -4, 1), (3, -4, 1)
λ κ°μ -4λ μλ‘ λ€λ₯Έ μ°Έκ°μλ₯Ό λνλ΄λ κ²μ μ μνλΌ. (2, 2, -4)μ (3, -4, 1)μ΄ λ λ²μ© λνλλ€.
β¨οΈ λ¬Έμ νμ΄
- μ΄λΆ νμμ μμλ₯Ό 보μ₯ν΄μΌνλ 리μ€νΈμμλ μ¬μ©νμ§ λͺ»νλ€λ κ²μ μΈμ§νκ³ μμ΄μΌ νλ€.
μ΄λΆ νμν 리μ€νΈλ₯Ό μ λ ¬ν΄μ€λ€.
3151λ² λ¬Έμ λ μμμ μκ΄μμ΄ 3λͺ μ μΈμμ λ½μ μ½λ© μ€λ ₯μ ν©μ΄ 0μ΄ λλ μ‘°ν©μ μ°ΎμμΌ νλ€.
- μ
λ ₯μ λ°μ 리μ€νΈμ κΈΈμ΄μ -2 λ§νΌ μννλ€.
μννλ μ«μλ₯Ό X λΌκ³ ν λ, Xμμ λ μ«μλ₯Ό λΉΌ 0μ΄ λλ κ²½μ°λ₯Ό ν¬ν¬μΈν° + μ΄λΆνμμ ν΅ν΄ μ°Ύλλ€.
λ°μν'PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 13459 κ΅¬μ¬ νμΆ with Python (0) 2022.06.03 [λ°±μ€] 6010 Music Notes with Python (0) 2022.06.03 [λ°±μ€] 2637 μ₯λκ° μ‘°λ¦½ with Python (3) 2022.06.01 [λ°±μ€] 2342 Dance Dance Revolution with Python (0) 2022.05.20 [λ°±μ€] 18291 λΉμλ¨μ μ§κ²λ€λ¦¬ 건λκΈ° with Python (0) 2022.05.20 - 1 β€ N β€ 10000