https://www.acmicpc.net/problem/1940
Two Pointer 문제였다
고유 번호들을 정렬하여 리스트에 저장한다
left 와 right를 두고
그 다음 left와 right의 합이 m 보다 작으면 left를 증가
m보다 크다면 right을 감소 해주면서 줄여나간다
합이 m이상이 나오면 count를 +1 해주고 left와 right를 +1, -1 해준다.
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
li = sorted(list(map(int, input().split())))
left= 0
right = len(li) - 1
count = 0
while left < right:
sum_num = li[left] + li[right]
if sum_num < m:
left += 1
elif sum_num > m:
right -= 1
else:
count += 1
left += 1
right -= 1
print(count)
'Koala - 10기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] #1806 부분합 (0) | 2023.03.27 |
---|---|
[백준 / python] 17609. 회문 (0) | 2023.03.26 |
[백준/Python] 14465번: 소가 길을 건너간 이유 5 (슬라이딩 윈도우) (0) | 2023.03.26 |
[백준 / Python] 17609 회문 (0) | 2023.03.26 |
[백준/Python] 21610 마법사 상어와 비바라기 (0) | 2023.03.26 |