๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ProgramSolve/Baekjoon

[BOJ] 2437๋ฒˆ - ์ €์šธ (Python)

by SooooooooS 2023. 10. 27.
728x90

๐Ÿ› ๏ธ ๋ฌธ์ œ ๐Ÿ› ๏ธ


๐Ÿ—’๏ธ ์„ค๋ช… ๐Ÿ—’๏ธ

์šฐ์„  ์˜ˆ์‹œ ์ค‘์—์„œ ์ถ” [1, 1, 2]๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

๊ทธ๋Ÿฌ๋ฉด ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๋Š” ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

๋‹ค๋ฅธ ์˜ˆ์‹œ๋กœ [1, 2, 3]์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด,

1 = 1
2 = 2
3 = 3
4 = 1+3
5 = 2+3
6 = 1+2+3

์œ„์™€ ๊ฐ™์ด ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ฆ‰, ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ถ”๋“ค์˜ ๋ฌด๊ฒŒ๋ฅผ ํ•ฉํ•œ ๊ฐ’ ์ดํ•˜์˜ ๊ฐ’๋“ค์€ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋‹จ, ์ถ”์˜ ๋ฌด๊ฒŒ๋“ค์ด ์ •๋ ฌ์ด ๋˜์–ด์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ถ”์™€ ์ถ” ์‚ฌ์ด์˜ ๋ฌด๊ฒŒ ์ฐจ์ด๊ฐ€ ํฌ๊ฒŒ ๋‚˜๋ฉด ์•ˆ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ถ” ์‚ฌ์ด์˜ ๋ฌด๊ฒŒ ์ฐจ์ด๊ฐ€ ์–ผ๋งˆ๋งŒํผ ์ฐจ์ด๊ฐ€ ๋‚˜๋ฉด ์•ˆ๋˜๋Š”์ง€๋ฅผ ์ƒ๊ฐํ•ด๋ด์•ผํ•œ๋‹ค.

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์˜ˆ์‹œ๋กœ ํ˜„์žฌ [1, 1, 2, 3]์˜ ์ถ”๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด 7๊นŒ์ง€ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

๋‹ค์Œ ์ถ”๊ฐ€ ํ˜„์žฌ ์ธก์ •ํ•  ์ˆ˜ ์—†๋Š” 8๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ 6์ด๋ฉด 7 + 6 = 13 ๊นŒ์ง€ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ฆผ์—์„œ์™€ ๊ฐ™์ด [1, 1, 2, 3, 6, 7]์€ 20๊นŒ์ง€ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋‹ค์Œ ์ถ”๊ฐ€ 30์ด๋ฉด 21๋ถ€ํ„ฐ 29๊นŒ์ง€๋Š” ์ธก์ •ํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค.

์ด์™€ ๊ฐ™์€ ๊ทœ์น™์„ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

1. ์ถ”์˜ ๋ฌด๊ฒŒ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
2. ๊ฐ€์žฅ ์ž‘์€ ์ถ”์˜ ๋ฌด๊ฒŒ๊ฐ€ 1์ด ์•„๋‹๊ฒฝ์šฐ
    → ์ธก์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ€์žฅ ์ž‘์€ ์–‘์˜ ์ •์ˆ˜ ๋ฌด๊ฒŒ๋Š” 1์ด๋‹ค.
3. ๊ฐ€์žฅ ์ž‘์€ ์ถ”์˜ ๋ฌด๊ฒŒ๊ฐ€ 1์ผ ๊ฒฝ์šฐ
    → [(t : ํ˜„์žฌ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋ฌด๊ฒŒ) + 1 = ํ˜„์žฌ ์ธก์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ฌด๊ฒŒ] ์™€ ๋‹ค์Œ ์ถ”์˜ ๋ฌด๊ฒŒ ๋น„๊ต
        → t + 1 >= ๋‹ค์Œ ์ถ”์˜ ๋ฌด๊ฒŒ : t ์ฆ๊ฐ€
        → ์•„๋‹ ๊ฒฝ์šฐ : break

๐Ÿ€ ํ’€์ด ๐Ÿ€

import sys

input = sys.stdin.readline

n = int(input())
nums = list(map(int, input().split()))
nums.sort()

if nums[0] > 1 :
    print(1)
else : 
    t = nums[0]
    for i in range(1, n) :
        if t + 1 >= nums[i] :
            t += nums[i]
        else :
            break
    print(t + 1)
728x90