백준 3273 두 수의 합 파이썬 문제풀이 (python 투포인터)

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
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유