Koala - 10기/코딩테스트 준비 스터디
[백준/Python] 1940 주몽
코딩하는쉐프
2023. 3. 26. 23:53
https://www.acmicpc.net/problem/1940
1940번: 주몽
첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고
www.acmicpc.net
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)