[실버 1] 백준 14225 - 부분수열의 합 (파이썬)
글 작성자: pental

https://www.acmicpc.net/problem/14225
풀이
itertools.combinations를 이용해서 길이 1부터 N까지 모든 조합을 구한다.
각 조합의 합을 리스트 sums에 추가한다.
sums = [] for i in range(1, N + 1): for combination in combinations(S, i): sums.append(sum(combination))
중복된 합들을 제거한 후, 오름차순으로 정렬한다.
sums = list(set(sums)) sums.sort()
그 후 만들 수 없는 가장 작은 자연수를 찾기 위해서
answer = len(sums) + 1 for i in range(len(sums)): if sums[i] != i + 1: answer = i + 1 break
자연수는 1부터 시작하므로, i + 1이 각 합과 일치하는지 확인한다.
sums[i] ≠ i + 1이면, 그 수는 만들 수 없는 가장 작은 자연수이다.
만약 모든 수가 다 맞아떨어지면, 마지막 수보다 1더 큰 수를 출력한다.
코드
# 백준 14225 - 부분수열의 합 # 분류 : 브루트포스 from itertools import combinations N = int(input()) S = list(map(int, input().split())) sums = [] for i in range(1, N + 1) : for combination in combinations(S, i) : sums.append(sum(combination)) sums = list(set(sums)) sums.sort() answer = len(sums) + 1 for i in range(len(sums)) : if sums[i] != i + 1 : answer = i + 1 break print(answer)
이 글은
본 저작자 표시, 비영리 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
비영리
'Programming > 백준' 카테고리의 다른 글
[실버 1] 백준 1149 - RGB거리 (파이썬) (0) | 2025.04.09 |
---|---|
[골드 2] 백준 1202 - 보석 도둑 (파이썬) (0) | 2025.04.08 |
[실버 2] 백준 1535 - 안녕 (파이썬) (0) | 2025.04.06 |
[브론즈 2] 백준 3040 - 백설 공주와 일곱 난쟁이 (파이썬) (0) | 2025.04.05 |
[브론즈 4] 백준 11945 - 뜨거운 붕어빵 (파이썬) (0) | 2025.04.04 |
댓글
이 글 공유하기
다른 글
-
[실버 1] 백준 1149 - RGB거리 (파이썬)
[실버 1] 백준 1149 - RGB거리 (파이썬)
2025.04.09 -
[골드 2] 백준 1202 - 보석 도둑 (파이썬)
[골드 2] 백준 1202 - 보석 도둑 (파이썬)
2025.04.08 -
[실버 2] 백준 1535 - 안녕 (파이썬)
[실버 2] 백준 1535 - 안녕 (파이썬)
2025.04.06 -
[브론즈 2] 백준 3040 - 백설 공주와 일곱 난쟁이 (파이썬)
[브론즈 2] 백준 3040 - 백설 공주와 일곱 난쟁이 (파이썬)
2025.04.05
댓글을 사용할 수 없습니다.