Koala - 11기/코딩테스트 준비 스터디
[백준 / Python] 1253번 : 좋다
kwonlabong
2023. 7. 30. 21:45
문제
https://www.acmicpc.net/problem/1253
풀이
입력받은 리스트(li)를 정렬한다.
반복문을 통해 선택된 수를 제외한 새로운 리스트(arr)를 만든다.
투 포인터를 이용하여 새 리스트를 양 끝에서 탐색한다.
두 수의 합과 선택한 수를 비교한다.
- li[i] == val이면 cnt를 증가시키고 while문을 종료한다.
- li[i] > val이면 l을 증가시킨다.
- li[i] < val이면 r을 감소시킨다.
코드
n = int(input())
li = sorted([*map(int, input().split())])
cnt = 0
for i in range(n):
arr = li[:i] + li[i + 1:]
l, r = 0, len(arr) - 1
while l < r:
val = arr[l] + arr[r]
if li[i] == val:
cnt += 1
break
elif li[i] > val:
l += 1
else:
r -= 1
print(cnt)