브루트 포스로 넘어왔다! 근데 난 수학이 더 좋았던 것 같기도 하다....
백준 #2309 일곱 난쟁이
문제
아홉 난쟁이의 키가 주어졌을 때 일곱 난쟁이를 찾는 프로그램을 작성
- 일곱 난쟁이의 키의 합이 100이 됨
입력
- 아홉 줄에 걸쳐 난쟁이들의 키가 주어짐
- 각 난쟁이들의 키는 모두 다름
- 가능한 정답이 여러가지일 경우, 아무거나 출력
나의 생각
- 입력을 리스트로 받는다
- (입력값의 합 - 100)을 하면 없애야 할 두 난쟁이의 키의 합이 나온다
- 계속 비교해가면서 두 난쟁이를 찾아 없앤다.
제출한 코드
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 |