ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
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
๋ฌธ์ ํ์ด

์ด ๋ฌธ์ ๋ ์ฃผ์ด์ง ์์ด์ ๋ถ๋ถ ํฉ์ ๊ตฌํ์์ ๋, ๊ตฌํ ์ ์๋ ์๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ์์ ์ ๋ ฅ 1์์ ๊ตฌํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํธ๋ฆฌ๋ก ๋ฒ๋๋ค๋ฉด ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. ์ฆ ์ฃผ์ด์ง ์์ด์ ๋ชจ๋ ์ ํํ๋ ๊ฒฝ์ฐ์ ๋ถ๋ถ์ ์ผ๋ก ์ ํํ์ง ์์ ๋์ ๋ฐ๋ผ ํฉ์ ๊ตฌํ๋ฉด ๋๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ค๋ฉด ์ฌ๊ท ํธ์ถ์ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค. ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์๋ฅผ ์๊ฐํ์ฌ ๊ตฌํํ๋ฉด ๋๋ค.
- ์ค๊ฐ์ ๋ฐ์ํ๋ ๊ฐ๋ ๊ธฐ๋กํ์ฌ์ผ ํ๊ธฐ์, ์ธ๋ฑ์ค๊ฐ N์ ์ด๋ฃจ๋ ๊ฒฝ์ฐ๋ง ๊ฐ์ ์ ์ฅํ์ง ์๊ณ ๊ฐ์ง๋ฅผ ๋ป์ ๋๋ง๋ค ๋ถ๋ถ ํฉ์ ๊ธฐ๋กํ๋ค.
- ์ฌ๊ท ํธ์ถ์ ํ ๋, ํ์ฌ ์ธ๋ฑ์ค์ ๊ฐ์ ๋ฐ์ํ๋ ๊ฒ๊ณผ ํ์ง ์๋ ๊ฒ 2๊ฐ์ง๋ก ๋๋์ด ์ฌ๊ท ํธ์ถ์ ํ๋ค.
์ฝ๋
from sys import stdin
def dfs(idx, sum_num):
global answer
if idx == n:
return
answer.add(sum_num + s[idx])
dfs(idx + 1, sum_num + s[idx])
dfs(idx + 1, sum_num)
if __name__ == '__main__':
n = int(stdin.readline())
s = list(map(int, stdin.readline().split(' ')))
answer = set(s[:])
dfs(0, 0)
ret = 0
for num in range(max(answer)):
if num + 1 not in answer:
ret = num + 1
break
print(ret if ret else max(answer) + 1)
๋น ์ง ์๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ ๊ตฌํ ๊ฐ์์ max๊น์ง์ ์๋ฅผ ์์ฐจ์ ์ผ๋ก ํ์ํ๊ณ ๋๊น์ง ํ์ํ์ฌ๋ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ๋ max + 1 ๊ฐ์ ๋ฐํํ๋๋ก ํ์๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 16948 ๋ฐ์ค ๋์ดํธ (0) | 2020.08.02 |
---|---|
๋ฐฑ์ค: 9663 N-Queen (0) | 2020.08.01 |
๋ฐฑ์ค: 2250 ํธ๋ฆฌ์ ๋์ด์ ๋๋น (0) | 2020.07.29 |
๋ฐฑ์ค: 1261 ์๊ณ ์คํ (0) | 2020.07.28 |
๋ฐฑ์ค: 11725 ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (0) | 2020.07.27 |