[백준]3273. 두 수의 합(python, 파이썬)

giggle·2023년 6월 21일
0

문제

3273. 두 수의 합


📌 아이디어

투포인터 알고리즘을 활용해 리스트에 두 개의 위치를 기록하여 문제를 해결했습니다.

1. 수의 리스트를 오름차순으로 정렬합니다.
2. 리스트의 시작점과 끝점을 투포인터로 지정합니다.
3. 포인터로 지정된 값들의 합이 일치하면 카운트를 증가하고, 포인터를 이동합니다.
4. 합이 타겟값보다 크다면 끝점을 이동하고, 반대의 경우는 시작점을 이동합니다.


📌 코드

N = int(input())
lst = list(map(int, input().split()))
X = int(input())
# 오름차순 정렬
lst.sort()
cnt = 0
# 왼쪽, 오른쪽 포인터
left, right = 0, N-1

while left < right:
    # 타겟값을 만족한다면 두 포인터를 이동 및 카운트 증가
    if lst[left] + lst[right] == X:
        cnt += 1
        right -= 1
        left += 1
    # 타겟값보다 작다면 왼쪽 포인터를 이동
    elif lst[left] + lst[right] < X:
        left += 1
    # 타겟값보다 크다면 오른쪽 포인터를 이동
    else:
        right -= 1

print(cnt)



피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.

0개의 댓글