๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€

๋ฐฑ์ค€ 1253: ์ข‹๋‹ค(ํŒŒ์ด์ฌ)

2025. 4. 25. 18:51ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ’ก ์„ธ ์ˆ˜์˜ ํ•ฉ ๋ฌธ์ œ, ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ์ ‘๊ทผํ• ๊นŒ?

๐Ÿง  ๋ฌธ์ œ ๋ฐฐ๊ฒฝ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์ด ์ฃผ์–ด์ง„๋‹ค:

"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
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 13114: List of Unique Numbers(ํŒŒ์ด์ฌ)
  • 22251๋ฒˆ: ๋นŒ๋Ÿฐ ํ˜ธ์„(ํŒŒ์ด์ฌ)
  • ๋ฐฑ์ค€ 4179: ๋ถˆ!(ํŒŒ์ด์ฌ)
  • ๋ฐฑ์ค€ 4485: ๋…น์ƒ‰ ์˜ท ์ž…์€ ์• ๊ฐ€ ์ ค๋‹ค์ง€?(ํŒŒ์ด์ฌ)
quokkaST
quokkaST
  • quokkaST
    stquokka
    quokkaST
    • ๊ฐœ๋ฐœ์ž (77)
      • n8n (2)
      • CS๊ณต๋ถ€ (46)
        • Java & Spring (15)
        • ์ธํ”„๋ผ (7)
        • ์šด์˜์ฒด์ œ & ์‹œ์Šคํ…œ (9)
        • ๊ธฐํƒ€ CS์ง€์‹ (7)
        • ๋„คํŠธ์›Œํฌ (6)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (16)
      • ํ”„๋กœ์ ํŠธ (8)
        • ๊ฐ์ •&๊ธˆ์œต์ฑ—๋ด‡ (8)
      • ๋ฆฌํŒฉํ† ๋ง (5)
        • horong (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”