본문 바로가기
프로그래밍/알고리즘

백준 3040 - 백설공주와 일곱 난쟁이 파이썬

by 숙님 2023. 3. 13.
728x90

문제 

 

해결코드 

arr = []
for i in range(9):
    arr.append(int(input()))
for i in range(9):
    for j in range(i+1,9):
        if sum(arr)-arr[i]-arr[j] == 100:
            x,y = i,j
            break
arr.pop(x)
arr.pop(y-1)
for i in arr:
    print(i)

- 아홉명의 수를 다 더하기 

- 한명씩 반복문을 사용하여 뺴보고 

- 100을 기준으로 차액이 배열에 있는지 확인해서 있으면 그 것까지 뺴는 것을 생각했다 

- 그리고 합해서 100이 되는 7개의 나머지는 그대로 하나씩 리턴한다 

 

조합을 통해서도 풀이가 가능하다 

from itertools import combinations

nums = [int(input()) for _ in range(9)]

candidates = list(combinations(nums, 7))
for candi in candidates:
    if sum(candi) == 100:
        print(*candi, sep="\n")

 

오늘부터 백준허브 에러가 해결되어서 기쁘다 ㅎㅎ 

댓글