STUDY/Algorithm

[백준] 3040 백설공주와 일곱 난쟁이 python

sinawi95 2022. 1. 27. 09:51
728x90

https://www.acmicpc.net/problem/3040

 

3040번: 백설 공주와 일곱 난쟁이

매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.

www.acmicpc.net

손풀기용 문제

combination으로 두개의 값을 고르고, 그 두개의 값을 뺐을때 100이 되는 값을 찾는다.

그 두개의 값을 제거한뒤에 모든 값을 출력하면된다.

# import sys; input = sys.stdin.readline
from itertools import combinations
def main():
    dwarves = [int(input()) for _ in range(9)]
    total = sum(dwarves)
    rm_v1, rm_v2 = None, None
    for v1, v2 in combinations(dwarves, 2):
        if total - v1 - v2 == 100:
            rm_v1, rm_v2 = v1, v2
            break
    dwarves.remove(rm_v1)
    dwarves.remove(rm_v2)
    print(*dwarves, sep="\n")

if __name__ == '__main__':
    main()

손풀기용 문제였지만 백트래킹으로 접근했을때 답을 틀렸다.

백트래킹 왜이렇게 약한지...