728x90
반응형
https://www.acmicpc.net/problem/1940
1940번: 주몽
첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고
www.acmicpc.net
문제 해결
- 두 수의 합이 특정한 수(m)이 되야함.
- 리스트를 올림차순으로 정렬하고 투포인터를 이용해 두 수의 합을 구한다.
- 두 수의 합이 m보다 크면 오른쪽 포인터를 왼쪽으로 옮긴다.
- 두 수의 합이 m보다 작으면 왼쪽 포인터를 오른쪽으로 옮긴다.
- 두 수의 합이 m과 같으면 정답 ans를 1을 올리고 왼쪽 포인터를 오른쪽으로 한 칸, 오른쪽 포인터를 왼쪽으로 한 칸 옮겨서 새로운 경우의 수를 찾는다.
CODE
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
S = list(map(int, input().split()))
S.sort()
ans = 0
start = 0
end = n-1
while start<end:
if S[start] + S[end] > m:
end -= 1
elif S[start] + S[end] < m:
start += 1
else:
ans +=1
start +=1
end -=1
print(ans)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1253 좋다 (0) | 2023.02.18 |
---|---|
[python] 백준 2018 수들의 합 5 (0) | 2023.02.18 |
[python] 백준 14225 부분수열의 합 (0) | 2023.02.10 |
[python] 백준 1339 단어 수학 (0) | 2023.02.08 |
[python] 백준 11721 열 개씩 끊어 출력하기 (0) | 2023.02.05 |
댓글