알고리즘/백준
[백준] 3273번: 두 수의 합 / 파이썬
홍우진
2025. 2. 9. 20:45
728x90
반응형
문제 링크
https://www.acmicpc.net/problem/3273
풀이 코드
n = int(input())
su = sorted(list(map(int,input().split())))
x = int(input())
cnt, st, end = 0, 0, n - 1
while st < end:
temp = su[st] + su[end] #합
if temp > x: # x보다 temp가 크면?
end -= 1 # end를 한 칸 땡기기(값 줄이기).
elif temp < x: # x보다 temp가 작으면?
st += 1 # start를 한 칸 미루기(값 늘리기).
else: # 아니라면? (같다면)
cnt += 1 # 만족하는 쌍의 수 + 1
st += 1 # start + 1
print(cnt)
코드 해석
투 포인터 알고리즘을 활용하였다.
받은 리스트의 시작값과 끝값을 각각 기준점으로 삼은 뒤,
더하면서 x와 비교하여 수가 작다면 시작값을 옮기고, 크다면 끝값을 옮긴다.
체감 난이도: ★★☆☆☆
728x90
반응형