| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 128 MB | 143423 | 59710 | 41841 | 41.768% |
왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.
아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다.
아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을 수 없는 경우는 없다.
20
7
23
19
10
15
25
8
13
7
8
10
13
19
20
23
9개의 난쟁이 키 중에 2개를 제외한 7개의 합이 100이 되는 경우의 수 찾기
이는 완전 탐색 방법으로, 해당하지 않는 2개의 난쟁이 키를 골라내면 되는 것
-> 이중 for문 활용
# 이중 for문으로, for문 한개당 값을 하나씩 제거해 sum이 100이 되는 list 찾기
h = []
for _ in range(9):
h.append(int(input()))
for i in range(8):
for j in range(i+1, 9):
if sum(h) - h[i] - h[j] == 100:
a = h[i]
b = h[j]
break
h.remove(a)
h.remove(b)
h.sort()
for k in h:
print(k)
첫번째 for문은 range를 인덱스 7까지만 해야
두번째 for문에서 i+1인 인덱스 8까지 아홉 난쟁이의 키를 모두 탐색 가능하다.
또한, remove 함수를 for문 내부에서 실행할 경우
list 자체의 크기가 달라지므로
삭제할 값을 a, b라는 변수에 각각 넣어주고
for문 밖에서 remove 해주어야 한다.
또한 삭제할 a와 b를 찾으면 즉시 for문에서 탈출한다.(break 활용)
-list안에서 remove 사용해서 20분동안 오류 해결 못한 사람이-
