티스토리 뷰
728x90
https://www.acmicpc.net/problem/1940
- 해설 :
재료의 개수 N개와 각 재료마다 고유 번호가 주어진다. 또한 갑옷을 한 개 만들기 위해 필요한 고유번호의 합 M이 주어진다.
재료들을 2개씩만 합쳐서 갑옷을 만들 수 있는 개수를 찾는 문제이다.
- 풀이 :
투포인터의 기본적인 문제이다.
오름차순 또는 내림차순으로 정렬한 후, 양쪽 끝 값을 더하며 M보다 작다면 작은쪽의 인덱스를 변화시키고 크다면 큰 쪽의 인덱스를 변화시키면 된다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
from itertools import combinations
if __name__ == "__main__":
n = int(input())
M = int(input())
nums = sorted(list(map(int,input().split())))
cnt = 0
front = 0
rear = n-1
while front<rear:
if nums[front] + nums[rear] == M:
cnt +=1
front +=1
rear -=1
elif nums[front]+nums[rear] < M:
front +=1
else:
rear -=1
print(cnt)
|
cs |
320x100
'Algorithm > Implementation' 카테고리의 다른 글
(Python) - BOJ(2108번) : 통계학 (0) | 2022.01.30 |
---|---|
(Python) - BOJ(1978번) : 소수 찾기 (0) | 2022.01.30 |
(Python) - BOJ(1764번) : 듣보잡 (0) | 2022.01.28 |
(Python) - BOJ(1697번) : 숨바꼭질 (0) | 2022.01.27 |
(Python) - BOJ(1620번) : 나는야 포켓몬 마스터 이다솜 (0) | 2022.01.27 |
댓글
© 2022 WonSeok, All rights reserved