개발 · 컴퓨터공학/알고리즘
백준 3273 두 수의 합 파이썬 문제풀이 (python 투포인터)
막
2024. 10. 17. 11:03
728x90
반응형
백준 두 수의 합 파이썬 문제풀이
n개의 수열이 있고,
이 중 두 개의 합이 특정한 수 x를 만족하는 쌍이 몇 개인지 구하는 문제이다.
이 문제가 투포인터로 푼다는 것을 알고 있었기에 방법은 생각났다.
i와 j 인덱스를 잡고,
i=0, j=n-1 에서 출발해서 중간쪽으로 인덱스를 좁혀온다.
i번째 j번째를 더해서 target 수와 같은지 비교해보고,
합이 목표보다 크면 j - 1
목표보다 작으면 i + 1
그리고 i < j 상태에서
i == j이거나 i > j 이면 수열이 뒤집힌 것이므로 중단한다.
정답코드
n = int(input())
number = list(map(int,input().split()))
target = int(input())
i = 0
j = n-1
answer = 0
number.sort()
while i < j:
sum = number[i] + number[j]
if sum == target:
answer += 1
if sum > target:
j -= 1
else:
i += 1
print(answer)
이번에는 그래도 스스로 잘 풀어내서, 뿌듯하다.
728x90
반응형