Algorithm

[백준] 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
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.