Python으로 구현한 2309번 일곱 난쟁이 문제 풀이입니다.
https://www.acmicpc.net/problem/2309
def combinations(arr, r) :
for i in range(len(arr)) :
if r == 1 :
yield [arr[i]]
else :
for next in combinations(arr[i+1:], r-1) :
yield [arr[i]] + next
data = [int(input()) for _ in range(9)]
result = []
for value in combinations(data, 7) :
if sum(value) == 100 :
result = sorted(value)
break
for res in result :
print(res)
1. 입력된 9개의 값들을 data 리스트에 정의하고, 조합(combinations)을 통해 data 리스트에서 7개의 수를 도출해낸다.
2. 만약 도출해낸 7개의 수의 합이 100일 경우 오름차순으로 정렬하여 result에 할당하고 break 한다.
3. 최종적으로 result 리스트에 존재하는 값들을 하나씩 출력한다.
'백준(Python) 풀이 > 브루트포스 알고리즘' 카테고리의 다른 글
백준(Python) 3085번 사탕 게임 풀이 (1) | 2022.11.05 |
---|---|
백준(Python) 17136번 색종이 붙이기 풀이 (0) | 2022.08.27 |
백준(Python) 16637번 괄호 추가하기 풀이 (0) | 2022.08.21 |
백준(Python) 1182번 부분수열의 합 풀이 (0) | 2022.07.12 |
백준(Python) 14889번 스타트와 링크 풀이 (0) | 2022.03.24 |