본문 바로가기
공부/알고리즘

백준 #2309 일곱 난쟁이

by silverage 2023. 8. 19.

브루트 포스로 넘어왔다! 근데 난 수학이 더 좋았던 것 같기도 하다....


백준 #2309 일곱 난쟁이

문제

아홉 난쟁이의 키가 주어졌을 때 일곱 난쟁이를 찾는 프로그램을 작성

  • 일곱 난쟁이의 키의 합이 100이 됨

입력

  • 아홉 줄에 걸쳐 난쟁이들의 키가 주어짐
  • 각 난쟁이들의 키는 모두 다름
  • 가능한 정답이 여러가지일 경우, 아무거나 출력

나의 생각

  1. 입력을 리스트로 받는다
  2. (입력값의 합 - 100)을 하면 없애야 할 두 난쟁이의 키의 합이 나온다
  3. 계속 비교해가면서 두 난쟁이를 찾아 없앤다.

제출한 코드

import sys
input = sys.stdin.readline

dwarf = []

for i in range(9):
    dwarf.append(int(input().strip()))

diff = sum(dwarf)-100

for i in dwarf:
    if (diff-i) in dwarf and i != (diff-i):
        dwarf.remove(i)
        dwarf.remove(diff-i)
        break

dwarf.sort()

for i in dwarf:
    print(i)

우선적으로 9번 입력을 받은 후 리스트의 값의 합에서 100을 빼서 차이값에 넣었다.

그리고 리스트 반복을 돌렸다.
여기서 리스트가 반복할 때 마다 diff-i도 리스트 안에 값이 있으면 그 값들을 지우고 끝!
i와 같은 수는 존재하지 않으니 그 부분도 고려했다!

그리고 출력은 오름차순으로 출력하라 했으니, 오름차순으로 정렬 후 출력했다.

끝!

'공부 > 알고리즘' 카테고리의 다른 글

백준 #6588 골드바흐의 추측  (0) 2023.08.19
백준 #2609 최대공약수와 최소공배수  (0) 2023.08.19
백준 #17425 약수의 합  (0) 2023.08.19
백준 #17427 약수의 합 2  (0) 2023.08.19
백준 #1037 약수  (0) 2023.08.19