https://www.acmicpc.net/problem/1253
풀이
두 수의 합을 이용하기에 투 포인터 알고리즘인 것을 알 수 있다.
for문으로 리스트 안에 특정 숫자를 뽑아주고
뽑은 특정 숫자를 제외한 숫자들의 합으로 뽑은 특정 숫자를 표현할 수 있으면 좋다(GOOD) 개수 1 추가.
코드
# 1253번 좋다
n = int(input())
li = sorted(list(map(int, input().split())))
ans = 0
# 두 수의 합을 표현해줄 숫자를 순차적으로 뽑아준다.
for i in range(n):
target = li[i]
start = 0
end = n-2
new_li = li[:i] + li[i+1:]
while start < end:
total = new_li[start] + new_li[end]
# 두 수의 합이 target을 만족시키면 ans += 1 후 다음 수 실
if total == target:
ans += 1
break
if total >= target:
end -= 1
else:
start += 1
print(ans)
출력결과
'백준 > 투 포인터' 카테고리의 다른 글
[백준][Python] 14921번 용액 합성하기 - 코팩 (0) | 2023.08.14 |
---|---|
[백준][Python] 3649번 로봇 프로젝트 - 코팩 (0) | 2023.08.11 |
[백준][Python] 2473번 세 용액 - 코팩 (0) | 2023.08.10 |
[백준][Python] 2470번 두 용액 - 코팩 (0) | 2023.08.09 |
[백준][Python] 2467번 용액 - 코팩 (0) | 2023.08.09 |