개발/python
[백준 2309번] 일곱 난쟁이 - python
dotudy
2025. 8. 11. 23:05
https://www.acmicpc.net/problem/2309
📌 문제 탐색하기
- 총 아홉 개의 수가 주어짐.
- 일곱 명만 진짜 난쟁이
- 7명의 총합이 100
- 가능한 정답이 여러 가지인 경우는 아무거나 출력하고 총합이 100이 안 되는 경우는 없다.
→ 7개를 더하기 보다는 9개에서 2개를 빼자!
배열에 저장해서 sort하고 2개를 제거하면서 총합 100이 되는 경우를 찾자.
📌 코드 설계하기
- for문으로 배열에 9개 값 저장하기
- 배열 sort하기 및 100과 9개 값 총합 차이 구하기
- 이중 for문 돌면서 2개씩 뽑아서 더한 값이 전에 구한 차이와 같은지 확인
- 같을 경우 break!
- → for문이 두 개라서 flag를 둬서 외부 for문 깨기
📌 정답 코드
arr = []
for i in range (9):
arr.append(int(input()))
arr = sorted(arr)
diff = sum(arr) - 100
flag = False
for i in range (8):
for j in range(i+1, 9, 1):
if (arr[i] + arr[j]) == diff:
temp = arr[j]
arr.remove(arr[i])
arr.remove(temp)
flag = True
break
if flag == True:
break
for i in range(len(arr)):
print(arr[i])