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])
'개발 > python' 카테고리의 다른 글
[백준 1181번] 단어 정렬 - python (3) | 2025.08.13 |
---|---|
[백준 10814번] 나이순 정렬 - python (0) | 2025.08.12 |
[백준 11659번] 구간 합 구하기 4 - python (0) | 2025.03.26 |
[알고리즘] 구간 합 알고리즘 (0) | 2025.03.26 |
[백준 1546번] 평균 - python (1) | 2024.11.23 |