๋ฐฑ์ค€ 14225 ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ ํŒŒ์ด์ฌ

2023. 2. 25. 01:37ใ†๐Ÿ”ฑ Algorithm

 

14225๋ฒˆ: ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ

์ˆ˜์—ด S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜์—ด S์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ž์—ฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, S = [5, 1, 2]์ธ ๊ฒฝ์šฐ์— 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)์„ ๋งŒ๋“ค

www.acmicpc.net

 

์ฒ˜์Œ ํ‘ผ ์ฝ”๋“œ

from itertools import combinations


N = int(input())
arr = list(map(int, input().split()))
max_value = sum(arr)

num_set = set()
for n in range(1, N+1):
    for c in combinations(arr, n):
        num_set.add(sum(c))

i = 1
while True:
    if i not in num_set:
        print(i)
        exit()
    i += 1

 

๋ธŒ๋ฃจํŠธํฌ์Šคํ‹ฑ ํ•˜๊ฒŒ ํ’€์–ด์„œ ๊ต‰์žฅํžˆ ์ง€์ €๋ถ„ํ•˜๋‹ค. ๋‚ด๊ฐ€ ๋ฉด์ ‘๊ด€์ด๋ฉด ์ด๋ ‡๊ฒŒ ํ‘ผ ์‚ฌ๋žŒ ์•ˆ๋ฝ‘์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์–ด๋ดค๋‹ค.

 

๋‹ค์‹œ ํ‘ผ ์ฝ”๋“œ

N = int(input())
arr = sorted(list(map(int, input().split())))
answer = 0
for i in arr:
    if answer + 1 < i:
        break
    answer += i
print(answer + 1)

์˜ ๋จธ์ทจ better

1. ์šฐ์„  ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

2. ์ •๋ ฌ๋œ ์ˆ˜๋ฅผ ์ˆœํšŒ

3. answer + 1 ์ด ์ˆœํšŒํ•˜๋Š” ๊ฐ’ ๋ณด๋‹ค ์ž‘๋‹ค๋Š” ๊ฑด, answer + 1 ์ด ๋‹ต์ด๋ผ๋Š” ์˜๋ฏธ. 

4. ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ์—” answer ์— ํ˜„์žฌ ์ˆœํšŒ์ค‘์ธ ๊ฐ’ i ๋ฅผ ๋”ํ•œ๋‹ค. ์ด๋Š” ํ˜„์žฌ i ๊ฐ’ ๋ณด๋‹ค๋Š” ํฐ ์ˆ˜๊ฐ€ ์ •๋‹ต์ด ๋  ๊ฒƒ์ด๋ž€ ์˜๋ฏธ.

5. for ๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ์˜ answer + 1 ๊ฐ’์ด ๋‹ต์ด ๋œ๋‹ค.