Algorithm/Python

[백준 2309] 일곱 난쟁이

🥭맹2 2021. 5. 3. 01:03

1. 문제

www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

2. 접근 방법

조합으로 2개만 뽑아가지고 

총 키에서 그 2개의 합을 뺀 값이 100이 나오면 바로 프린트하고 exit()해서 빨리 끝냈습니당.

3. 코드

python

def comb(cnt, start):
    global pair
    if cnt == 2:
        if sum(heights) - sum(pair) == 100:
            for i in heights:
                if i != pair[0] and i != pair[1]:
                    print(i)
            exit()
        return
    for i in range(start, 9):
        pair.append(heights[i])
        comb(cnt+1, i+1)
        pair.pop()

heights = [int(input()) for _ in range(9)]
heights.sort()
pair = []
comb(0, 0)

4. 마치며

마치며~!

'Algorithm > Python' 카테고리의 다른 글

[스택/큐] 프린터  (0) 2021.05.04
[스택/큐] 기능개발  (0) 2021.05.03
[백준 6588] 골드바흐의 추측  (0) 2021.05.03
[백준 9613] GCD 합  (0) 2021.05.02
[스택/큐] 다리를 지나는 트럭  (0) 2021.05.02