홍우진의 개발 일기장
[백준] 3273번: 두 수의 합 / 파이썬 본문
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
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 11576번: Base Conversion / 파이썬 (0) | 2025.02.11 |
---|---|
[백준] 24313번: 알고리즘 수업 - 점근적 표기 1 / 파이썬 (0) | 2025.02.10 |
[백준] 1337번: 올바른 배열 / 파이썬 (0) | 2025.02.08 |
[백준] 2018번: 수들의 합 5 / 파이썬 (0) | 2025.02.07 |
[백준] 11659번: 구간 합 구하기 4 / 파이썬 (1) | 2025.02.06 |
Comments