https://www.acmicpc.net/problem/1253
투 포인터를 사용하는 문제로 백준 1940번과 상당히 유사한 문제이다.
글쓴이 같은 경우는 투 포인터를 사용하기 위해 수들을 정렬해주고 더해서 나와야하는 수를 pop하여 저장했다가 반복이 끝나면 insert로 다시 추가하는 방식을 사용했다.
투 포인터에 대한것은 1940번에서 했기 때문에 생략한다.
코드는 다음과 같다.
import sys
input = sys.stdin.readline
N = int(input())
num = list(map(int, input().split()))
num.sort()
count = 0
for i in range(len(num)):
target = num.pop(i)
a = 0
b = N-2
while a < b:
first = num[a]
second = num[b]
if first + second == target:
count += 1
num.insert(i,target)
break
elif first + second > target:
b -= 1
elif first + second < target:
a += 1
if len(num) != N:
num.insert(i,target)
else:
pass
print(count)
1940번과 같이 생각해보면 투 포인터를 이해하기 정말 좋은 문제라고 생각한다.
'📚알고리즘 > 백준' 카테고리의 다른 글
[백준 11003번] 최솟값 찾기 (Python/파이썬) (0) | 2023.01.17 |
---|---|
[백준 12891번] DNA 비밀번호 (Python/파이썬) (1) | 2023.01.15 |
[백준 1940번] 주몽 (Python / 파이썬) (0) | 2023.01.07 |
[백준 2018번] 수들의 합 5 (파이썬/Python) (0) | 2023.01.07 |
[백준 10986번] 나머지 합 (Python/파이썬) (0) | 2023.01.07 |