https://www.acmicpc.net/problem/2309
해당 문제를 보고, 9명의 난쟁이가 주어지고, 그 중, 합이 100 이되는 7명을 구하면 되기에 경우의 수가 많지 않다는 것을 인지했습니다.
(부전공 통계학을 활용했어요^^)
그래서 그냥 모든 경우의 수를 for 문을 활용해서 구해도 문제가 없다는 판단이 들었고 이를 이용해서 문제를 풀었습니다.
먼저 전체 합을 구하고, 거기서 리스트의 원소를 두개씩 빼주면서 합이 100 이 될 때까지 구하도록 구현하였고, for 문을 통해서 일곱 난쟁이가 만들어질 배열을 만들었습니다.
그 후, Python에서 제공하는 sort() 함수를 사용해서 오름차순으로 정렬하였고, 코드를 완성하였습니다.
코드는 아래와 같습니다 ^^
import sys
input = sys.stdin.readline
height = []
# 9명의 난쟁이의 높이 입력을 받기
for i in range(9):
a = int(input())
height.append(a)
# 9 난쟁이의 키의 합
totalSum = sum(height)
# 제거할 난쟁이들을 선별하는 과정
for i in range(9):
for j in range(i+1,9):
tempSum = totalSum - (height[i] + height[j])
if tempSum == 100:
height.pop(j)
height.pop(i)
break
if tempSum == 100:
break
height.sort() # 파이썬에서 제공하는 리스트 정렬(기본이 오름차순)
for i in range(7):
print(height[i])