<내 코드>
N = int(input())
nums = list(map(int, input().split()))
nums.sort()
sum_num = 0
for i in range(N):
if sum_num + 1 >= nums[i]:
sum_num += nums[i]
else:
break
print(sum_num + 1)
1. 입력 값 오름차순 정렬
2. 다음에 등장하는 숫자가 (누적합 + 1) 이하라면 누적합 + 1까지의 숫자들은 기존의 숫자들의 조합으로 모두 표현 가능하다.
3. 하지만, 다음에 등장하는 숫자가 (누적합 + 2) 이상이라면 기존의 숫자들의 조합으로 (누적합 + 1) 표현이 불가능하므로 (누적합 + 1)을 출력해준다.
생각지도 못한 문제 해결 방법이었다..그리디 문제를 조금 더 다양하게 풀어봐야겠다.
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 9012] 괄호 - Python (문자열) (0) | 2020.09.09 |
---|---|
[백준 1080] 행렬 - Python (그리디) (0) | 2020.09.05 |
[백준 7562] 나이트의 이동 - Python (BFS) (0) | 2020.09.04 |
[백준 2468] 안전 영역 - Python (브루트포스, DFS) (0) | 2020.09.03 |
[백준 10026] 적록색약 - Python (DFS, BFS) (0) | 2020.09.03 |