-
[Python] 2309 일곱 난쟁이Algorithm/백준 2021. 10. 15. 02:43
1. 문제 📚
2. 입출력 예 📋
3. 알고리즘 ✅
2명만 제외하면 100이 되니, 이중 for문을 이용하여 모든 경우의 수 중, 일곱명의 키 합 - (두개를 더한 값) = 100이면
그 두개만 -1로 변경해주어 출력해주었다.
4. 소스코드 💻
import sys height_list = [] for i in range(9): height_list.append(int(sys.stdin.readline())) height_sum = sum(height_list) is_exist = False for i in range(len(height_list) - 1): for j in range(i + 1, len(height_list)): if height_sum - (height_list[i] + height_list[j]) == 100: height_list[i], height_list[j] = -1, -1 is_exist = True if is_exist: break height_list = sorted(height_list) for i in height_list: if i != -1: print(i)
계속해서 92%정도에 실패가 떠서, 뭐가 문제인지 해맸던 것 같다.
처음에 if 절안에 break를 넣으면, 이중 for문을 빠져나갈 것이다 라고 생각하여 코드를 작성하였습니다.
그러나, if 절안에 break를 넣게되면 if절을 빠져나가는 것에 대한 break가 되기 때문에 boolean을 이용하여 완전히 for문 밖으로 나가도록 구현해야합니다.
만일, if 절안에 break가 있다면, 100이 되는 경우의 수가 2개 이상일 경우 모두 -1로 변경되기 때문에 오답입니다.
기초적인 것이지만 꼭 까먹지 말아야겠다.
'Algorithm > 백준' 카테고리의 다른 글
[Python] 1744 수묶기 (0) 2022.12.28 [Python] 1541 잃어버린 괄호 (0) 2022.12.27 [Python] 백준 11650 - 좌표 정렬하기 (0) 2021.10.12 [Python] 백준 2193번 이친수 (0) 2021.05.17 [Python] 백준 2439번 별찍기 - 2 (0) 2021.05.08