백준 2309 일곱 난쟁이

Lungnaha·2022년 2월 3일
1

코딩테스트

목록 보기
2/13

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

1차 구현

해당 문제를 보고, 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])

https://github.com/lungnahahd/Python_Prac.git

profile
Long🌈Now😁Happy💖

0개의 댓글