문제 풀이/백준(BOJ)
[Python] 백준 3273번 : 두 수의 합
희조당
2022. 8. 8. 12:04
728x90
https://www.acmicpc.net/problem/3273
3273번: 두 수의 합
n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는
www.acmicpc.net
💡 문제 풀이
두 포인터 문제이다.
정렬을 한 다음에 시작 값과 끝 값을 계산해서
같다면 정답의 개수를 늘리고, 계산값이 찾는 값 보다 크면 end를 줄이고, 반대라면 start를 늘리면 된다.
✔️ 느낀 점
두 포인터의 개념을 처음 공부하는 기회였다. 이번에 잘 정리해놔야겠다.
💻 코드
N = int(input())
arr = list(map(int, input().split()))
arr.sort()
x = int(input())
start, end = 0, N-1
cnt = 0
while start < end:
tmp = arr[start] + arr[end]
if tmp == x: cnt += 1
if tmp < x:
start += 1
continue
end -= 1
print(cnt)