백준|2437번|저울

README·2023년 1월 24일
0

파이썬 PS풀이

목록 보기
121/136

문제 설명

배열을 입력받고 배열들에 포함된 숫자를 합해서 만들 수 없는 가장 작은 자연수를 출력하는 문제입니다.

작동 순서

  1. 배열을 입력받고 정렬합니다.
  2. 배열의 앞에서부터 숫자들을 가져와서 이전 숫자까지의 합과 비교합니다.
  3. 만약 이전 숫자까지의 합보다 현재 숫자가 2 이상 더 큰 경우 이전 숫자까지의 합과 현재 숫자 사이의 수는 만들 수 없으므로 이전 숫자까지의 합+1을 반환합니다.
  4. 현재 숫자가 이전 숫자까지의 합 이하이거나 1만큼만 더 큰 경우 현재 숫자를 합에 더하고 다음 순서로 넘어갑니다.
  5. 만약 위의 과정에서 만들 수 없는 수를 발견하지 못했다면 모든 수의 합+1을 반환합니다.

소스코드

import sys
N = int(sys.stdin.readline())
arr = list(map(int, sys.stdin.readline().split()))
arr.sort()
total = 0
answer = sum(arr)+1
for i in arr:
    if i > total+1:
        answer = total+1
        break
    else:
        total += i
print(answer)
profile
INTP 개발자 지망생

0개의 댓글