본문 바로가기

Coding test

[백준/14225/파이썬] 부분수열의 합


소스코드

N = int(input())
seq = list(map(int,input().split()))
bf = [False] * 10000000
subsets = [[]]

for num in seq:
  size = len(subsets)
  for y in range(size):
    bf[sum(subsets[y]+[num])] = True
    subsets.append(subsets[y]+[num])
for i in range (1,len(bf)):
  if bf[i] == False :
    print(i)
    break

알고리즘

1. 모든 가능한 부분 수열의 합을 구한다. 

2. 존재를 체크하는 list 선언 후 수열의 합이 있으면 True를 선언한다.

3. 1부터 for 문을 돌면서 수열의 합으로 나타내지 못한 애 (False인 애들)을 출력하고 종료한다.


실행 시간이 좀 오래걸렸지만 그래도 코드는 돌아가니깐...

input()
a=0
for i in [*sorted(map(int,input().split()))]:
    if a+1<i:break
    a+=i
print(a+1)

다른 사람의 풀이인데 세상에,, 코드는 역시 잘하는 사람꺼를 써야하나보다.

잘하는 사람이 되기 위해 노력하자