티스토리 뷰
728x90
반응형
https://www.acmicpc.net/problem/14225
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 collections import Counter
from itertools import combinations
# 입력
n = int(input())
s = list(map(int, input().split()))
# 입력값의 모든 조합을 구한 후, 조합 별 합을 새로운 리스트에 추가함
sum_list = []
for i in range(1, n+1):
combin = list(combinations(s, i))
for j in combin:
sum_list.append(sum(j))
# 정렬
sum_list.sort()
# 없는 번호를 찾기 위한 체크 리스트
check_num = [i for i in range(1, sum_list[-1]+2)]
# check_num에서 sum_list를 빼주면 sum_list에 없는 번호만 result에 담김
result = Counter(check_num) - Counter(sum_list)
# result는 Counter이므로 리스트로 변환 후 맨 처음 키값만 출력
print(list(result.keys())[0])
<다른 사람의 풀이>
# asm9677님 코드
input()
a=0
for i in [*sorted(map(int,input().split()))]:
if a+1<i:break
a+=i
print(a+1)
# <배운점>
# => 접근법.. 짧은 코딩..
# zeebraa00님의 코드
n = int(input())
num = list(map(int,input().split()))
visited = [0]*10000000
def dfs(idx,sum) :
if idx == n :
return
sum += num[idx]
visited[sum] = 1
dfs(idx+1, sum)
dfs(idx+1, sum-num[idx])
dfs(0,0)
print(visited[1:].index(0)+1)
# <배운점>
# => dfs를 이용하여 푼 점
728x90
반응형
'[그 외] > ㄴ (코테연습 : 파이썬 ver)' 카테고리의 다른 글
[백준] 1182번 : 부분수열의 합 (파이썬) (0) | 2021.07.06 |
---|---|
[백준] 6603번 : 로또 (파이썬) (0) | 2021.07.06 |
[프로그래머스] 땅따먹기 (파이썬) (0) | 2021.07.04 |
[프로그래머스] 다음 큰 숫자 (파이썬) (0) | 2021.06.30 |
[프로그래머스] 숫자의 표현 (파이썬) (0) | 2021.06.29 |
댓글
250x250
반응형
TAG
- 프로그래밍언어
- 프로그래머스코딩테스트
- 문법
- Summer/Winter Coding(~2018)
- 컴퓨터개론
- 코드잇
- level1
- KAKAO
- 프로그래머스
- 코딩테스트
- GIT
- 피보나치
- 파이썬문법
- 재귀함수
- 설치
- 정렬
- 알고리즘
- 이진탐색
- 월간 코드 챌린지 시즌2
- level2
- 월간 코드 챌린지 시즌1
- 백준
- 유닉스커맨드
- 파이썬
- 프로그래머스문제
- x만큼간격이있는n개의숫자
- 알고리즘문제
- SWiFT
- 조합
- 프로그래머스 프로그래머스문제
최근에 달린 댓글
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
링크
- Total
- Today
- Yesterday