Today
Total
06-28 11:03
관리 메뉴

홍우진의 개발 일기장

[백준] 3273번: 두 수의 합 / 파이썬 본문

알고리즘/백준

[백준] 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
반응형
Comments