백준 2309번 문제풀이

박세은·2023년 8월 18일

Algorithm

목록 보기
10/11


처음에는 어떻게 풀어야하나, 좀 당황했는데 막상 풀어보니 크게 어려운 내용이 아니었다.

문제 해석

입력받은 9개의 수 중에서 합해서 100이 되는 7개를 골라야 한다. 이렇게 생각하면 풀 수 없다! 반대로 합했을 때 100이 되지 못하게 하는 두 개의 숫자를 찾는다고 생각하면 쉽다.

나는 이 문제를 풀기위해 sum과 diff라는 변수를 사용했다. 입력받은 9개의 수를 모두 더한 값을 sum에 담는다. 그 다음 sum에서 100을 뺀 수를 diff에 담았다. 그리고 입력받은 숫자들 중에서 더해서 diff가 되는 두 수를 찾는다.

dwarf = []
sum = 0

for i in range(9):
    n = int(input())
    sum += n
    dwarf.append(n)
dwarf.sort()

diff = sum - 100

for i in dwarf:
    if (diff-i) in dwarf and (diff-i) != i:
        dwarf.remove(i)
        dwarf.remove(diff-i)
        break
        
for i in range(7):
    print(dwarf[i])

주의해야할 점은 난쟁이들의 키가 모두 다르다는 점이다. diff-i와 i가 같으면 안된다는 조건도 추가해줘야 한다. 그렇게 구한 i와 diff-i를 리스트에서 제거해주면 문제를 풀 수 있다.

문제 링크

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

0개의 댓글