문제 출처 (SILVER Ⅲ)
https://www.acmicpc.net/problem/3273

풀이
투 포인터를 활용하여 문제를 풀었다.
먼저 수열이 저장되어 있는 리스트를 오름차순으로 정렬 후
가장 앞쪽인 인덱스와 가장 뒤쪽인 인덱스의 수를 더하여 자연수 x가 되는지 확인했다.
x보다 작다면 앞쪽 인덱스를 +1 해주고, 크다면 뒤쪽 인덱스를 -1 해줬다.
x와 같다면 result 값에 +1 해준 뒤 왼쪽 인덱스도 +1 해줬다.
while문을 통해 앞쪽 인덱스가 뒤쪽 인덱스와 같아질때까지 반복한 뒤 결과를 출력했다.
코드
n = int(input())
numbers = sorted(list(map(int, input().split())))
x = int(input())
s, e = 0, n - 1  # start, end
result = 0
while s < e:
    if numbers[s] + numbers[e] < x:
        s += 1
    elif numbers[s] + numbers[e] > x:
        e -= 1
    else:  # x 값과 같을 때
        result += 1
        s += 1
print(result)
'ALGORITHM > PYTHON' 카테고리의 다른 글
| 백준 BAEKJOON 34543번 와우산 스탬프 투어 [PYTHON/파이썬] (0) | 2025.10.17 | 
|---|---|
| 백준 BAEKJOON 34323번 할인이 필요해 [PYTHON/파이썬] (0) | 2025.09.27 | 
| 백준 BAEKJOON 34217번 찾아오시는 길 [PYTHON/파이썬] (0) | 2025.09.21 | 
| 백준 BAEKJOON 32515번 BB84 [PYTHON/파이썬] (0) | 2025.09.17 | 
| 백준 BAEKJOON 34115번 먼 카드 [PYTHON/파이썬] (1) | 2025.08.28 | 
