๐ก ์ธ ์์ ํฉ ๋ฌธ์ , ์ด๋ป๊ฒ ํจ์จ์ ์ผ๋ก ์ ๊ทผํ ๊น?
๐ง ๋ฌธ์ ๋ฐฐ๊ฒฝ
๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ด ์ฃผ์ด์ง๋ค:
"N๊ฐ์ ์ ์ Aโ, Aโ, ..., Aโ์ด ์ฃผ์ด์ง๋ค.
์ด ์ค ์๋ก ๋ค๋ฅธ ์ธ ์๋ฅผ ๊ณจ๋ผ Aแตข + Aโฑผ = Aโ๋ฅผ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ผ."
์ฌ๊ธฐ์ N ≤ 2,000, ๊ทธ๋ฆฌ๊ณ ๊ฐ Ai๋ |Ai| ≤ 1,000,000,000 ์ด๋ค.
์ฒ์์๋ ์ฐ๋ฆฌ ํฌ์ธํฐ ๊ธฐ๋ฐ ์์ ํ์์ผ๋ก ์ ๊ทผํ์ง๋ง, ์ฑ๋ฅ์์ ํ๊ณ๊ฐ ์์๊ณ
์ดํ ํฌ ํฌ์ธํฐ ๋ฐฉ์์ผ๋ก ๋ฆฌํฉํ ๋งํ๋ฉด์ ์ฑ๋ฅ์ ํ๊ธฐ์ ์ผ๋ก ๊ฐ์ ํ ์ ์์๋ค.
๐ ๊ธฐ์กด ์ ๊ทผ: ์ฐ๋ฆฌ ํฌ์ธํฐ ๊ธฐ๋ฐ ์์ ํ์
N = int(input())
num_lst = list(map(int, input().split()))
num_lst.sort()
left = 0
now = len(num_lst)-2
right = len(num_lst)-1
visited = [0 for _ in range(N+1)]
count = 0
while True:
if left >= right:
break
if now <= left:
left += 1
right = len(num_lst)-1
now = len(num_lst)-2
for number in range(right, now, -1):
if num_lst[left] + num_lst[now] < num_lst[number]:
right -= 1
if num_lst[left] + num_lst[now] == num_lst[number]:
if visited[number] == 0:
visited[number] = 1
count+=1
now -= 1
print(count)
- ์ธ ์์ ์ธ๋ฑ์ค๋ฅผ left, now, number๋ก ๋๊ณ ์กฐํฉ์ ํ์ธ
- ์๊ฐ ๋ณต์ก๋๋ ๊ฑฐ์ O(N³) ์ ๊ฐ๊น์ฐ๋ฉฐ, N=2,000์ด๋ฉด ์ต๋ 80์ต ๋ฒ๊น์ง ๋ ์ ์๋ค.
๐ง ๊ฐ์ : ํฌ ํฌ์ธํฐ ๊ธฐ๋ฐ ๋ฆฌํฉํ ๋ง
import sys
input = sys.stdin.readline
N = int(input())
num_lst = list(map(int, input().split()))
num_lst.sort()
count = 0
for i in range(N):
target = num_lst[i]
left = 0
right = N - 1
while left < right:
if left == i:
left += 1
continue
if right == i:
right -= 1
continue
total = num_lst[left] + num_lst[right]
if total == target:
count += 1
break
elif total < target:
left += 1
else:
right -= 1
print(count)
โ ์ฑ๋ฅ ๋น๊ต ๋ฐ ๊ฒฐ๋ก
| ํญ๋ชฉ | ์ฐ๋ฆฌ ํฌ์ธํฐ | ํฌ ํฌ์ธํฐ |
|---|---|---|
| ์๊ฐ ๋ณต์ก๋ | O(N³) | O(N²) |
| ์ต๋ ์ฐ์ฐ ํ์ | ์ฝ 80์ต | ์ฝ 400๋ง |
| ์ ๋ ฌ ํ์ ์ฌ๋ถ | ํ์ | ํ์ |
๐ ์ ๋ฆฌ
Ai + Aj = Ak๋ฌธ์ ๋ target์ ๊ณ ์ ์ํค๊ณ , ๋๋จธ์ง๋ฅผ ํ์ํ๋ ๋ฐฉ์์ด ํจ๊ณผ์ ์ด๋ค.์ ๋ ฌ + ํฌ ํฌ์ธํฐ๋ O(N²) ์์์ ๋๋ถ๋ถ์ ์ธ ์ ์กฐ๊ฑด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ฐฑ์ค 2075: N๋ฒ์งธ ํฐ ์(JAVA) (0) | 2025.05.06 |
|---|---|
| ๋ฐฑ์ค 13114: List of Unique Numbers(ํ์ด์ฌ) (0) | 2025.04.28 |
| 22251๋ฒ: ๋น๋ฐ ํธ์(ํ์ด์ฌ) (0) | 2025.04.26 |
| ๋ฐฑ์ค 4179: ๋ถ!(ํ์ด์ฌ) (0) | 2025.04.26 |
| ๋ฐฑ์ค 4485: ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง?(ํ์ด์ฌ) (0) | 2025.04.25 |