백준 3273번 - 두 수의 합 (Go)

2026. 2. 2. 17:30·algorithm

https://www.acmicpc.net/problem/3273

분석

이 문제는 수열이 주어지고 수열 내에서 서로 다른 자연수 2개를 더했을 때, x 가 되는 쌍을 구해야 합니다.

수열의 크기가 1 <= n <= 100,000 이기 때문에 단순하게 이중 for 문을 사용하면 100,000 ^ 2 = 10,000,000,000 이 되기 때문에

시간 초과입니다.

 

그래서 활용한 알고리즘은 투 포인터 입니다.

이 알고리즘을 사용하기 위해선 수열이 우선 정렬되어 있어야 합니다. 

두 수의 쌍을 찾으면 되기 때문에 수열의 첫 번째와 끝부터 시작하여 서로 더해가면서 포인터를 조절하며 찾으면 됩니다.

 

그리고 1 <= x <= 2000000 이기 때문에 int 형을 사용해서 풀면 됩니다.

 

시간복잡도는 배열 탐색 O(N), 수열 정렬 O(NlogN) 이므로 O(NlogN) 입니다.

공간복잡도는 최대 int 형 10만개이므로 8byte * 10만 = 80만 byte 로 0.8 MB 입니다.

풀이 코드

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n int
	fmt.Fscan(in, &n)

	nums := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &nums[i])
	}

	sort.Ints(nums)

	var x int
	fmt.Fscan(in, &x)

	left, right := 0, len(nums) - 1
	res := 0

	for left < right {
		cur := nums[left] + nums[right]

		if cur == x {
			res++
			left++
			right--
		} else if cur < x {
			left++
		} else if cur > x {
			right--
		}
	}

	fmt.Fprintln(out, res)
}

회고

기본적인 투 포인터 활용 문제였습니다.

'algorithm' 카테고리의 다른 글

백준 17144번 - 미세먼지 안녕! (Go)  (0) 2026.02.02
백준 1700번 - 멀티탭 스케줄링 (Go)  (0) 2026.02.02
MST 에 관하여  (0) 2025.03.18
LCA 에 관하여  (0) 2025.03.17
세그먼트 트리에 관하여  (0) 2025.03.12
'algorithm' 카테고리의 다른 글
  • 백준 17144번 - 미세먼지 안녕! (Go)
  • 백준 1700번 - 멀티탭 스케줄링 (Go)
  • MST 에 관하여
  • LCA 에 관하여
heejunp
heejunp
희준개발
  • heejunp
    희준개발
    heejunp
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 회고 (1)
      • project (13)
        • 본투비엔지니어 (12)
        • 페어쉐어 (1)
      • java (16)
      • spring (1)
      • go (1)
      • web (1)
      • cloud (1)
      • cloudflare (1)
      • database (1)
      • algorithm (16)
      • OS (1)
      • ai (1)
      • 기타 (2)
      • 오류 (1)
      • 생각정리 (2)
      • 자격증 (1)
        • RHCSA (1)
      • linux (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    heejunp
    백준 3273번 - 두 수의 합 (Go)
    상단으로

    티스토리툴바