[백준] 2309: 일곱 난쟁이

    728x90
     

    2309번: 일곱 난쟁이

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

    www.acmicpc.net

    최종 코드

    list = []
    flag = 0
    for i in range(9):
        list.append(int(input()))
    
    for i in range(8):
        for j in range(i + 1, 9):
            # print(f"sum(list) -> {sum(list)} list[i] + list[j] -> {list[i] + list[j]}")
            if sum(list) - (list[i] + list[j]) == 100:
                a = list[i]
                b = list[j]
    
    list.remove(a)
    list.remove(b)
    list.sort()
    
    for i in list:
        print(i)

    풀이

    코드는 간단하다. list를 하나 만들어서 9개의 값을 받는다. 그 후 이중 for문을 사용해서 i와 j를 활용해 두 난쟁이를 추측한다. 모든 list의 값 중 두 개를 뽑아 두 난쟁이를 임의로 정하는 것이다.

    그 후 list 전체 합 - (i + j) 가 100인지 확인한다. 맞다면 a b (두 난쟁이) 변수에 해당 값을 넣는다. 

    for 문 탈출 후에는 해당 값 두 개를 지운 뒤 sorting 한다.

    마지막으로 for문으로 list를 모두 출력한다.

    트러블슈팅

    사실 처음 문제를 읽을 때 주어지는 키는 100을 넘지 않는 자연수이며, 라는 부분을 일곱 난쟁이의 키의 합이 100보다 작다는 뜻으로 잘못 이해해서 if sum(list) - (list[i] + list[j]) <= 100: 로 했다. 문제를 잘 읽어야겠다.

    'Algorithm' 카테고리의 다른 글

    [1일 3알고리즘] Day1  (0) 2024.04.11
    [DP]note 5  (0) 2023.12.03
    [알고리즘] 점근적 표기법 - 상한 하한 차수  (0) 2023.10.11
    [백준] 7568: 덩치  (0) 2023.07.15
    [백준] 2798: 블랙잭  (0) 2023.07.15

    댓글