https://www.acmicpc.net/problem/2309
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
9명 중 7명을 골라서 그 7명의 키를 합친 값이 100일 경우를 찾으면 될 것 같아서 "조합"을 떠올렸고, 관련 라이브러리를 검색하여 사용해보기를 먼저 시도하였다.
근데 잘 안돼서 구글링으로 나랑 비슷하게 접근한 코드를 조금 참고함.
import itertools
array = [int(input()) for _ in range(9)]
for i in itertools.combinations(array, 7): # 해당 배열을 7명 중복없이 뽑아준다.
if sum(i) == 100: # 그합이 100이라면
for j in sorted(i): # 그 7명을 오름차순으로 정렬후 출력한다.
print(j)
break #그 후 반복문 탈출
이 분은 sum 내장함수를 사용하셨는데, 이 생각은 못했음...
아주 간단하게 한 조합의 요소들의 합을 구해서 100과 비교연산 해주고,
참이라면 sorted로 감싸주어 정렬한 뒤 출력해주는 방식을 사용하였다.
거기에 처음 입력받을 때도 한 줄로 깔끔간단하게 작성하였다.
나도 담에 저렇게 해봐야지 ...
from itertools import combinations
arr = []
for _ in range(9):
height = int(input())
arr.append(height)
for i in combinations(arr, 7):
if sum(i) == 100:
for j in sorted(i):
print(j)
break
해결 !
참고 :
https://ji-gwang.tistory.com/244
백준 2309번 파이썬 문제풀이(브루트 포스 - 일곱 난쟁이)
정답코드1 - for문 이용 array = [] for i in range(9): array.append(int(input())) array.sort() sum_ = sum(array) # 만약 모두다 더하고 2명을 뺐을 때 그 값이 100이라면 2개를 뺀 나머지 값들 출력 for i in range(len(array)): fo
ji-gwang.tistory.com
'알고리즘 > 백준 풀이' 카테고리의 다른 글
[백준/Python] #9095 : 1, 2, 3 더하기 - 다이나믹 프로그래밍 (0) | 2023.05.25 |
---|---|
[백준/Python] #1920 : 수 찾기 - 이분탐색 (0) | 2023.05.18 |
[백준/Python] #1260 : DFS와 BFS - DFS/BFS (1) | 2023.04.13 |
[백준/Python] #2941 : 크로아티아 알파벳 - 구현 (0) | 2023.03.23 |
[백준/Python] #13305 : 주유소 - 그리디 (0) | 2023.03.23 |