(이 부분은 조금 더 공부하겠습니다😭)
📍 해설지 참고
📍 해설지 참고 후
2번 수정 -> 9명의 난쟁이 중 제외할 2명 구해서 9명 키 합 - 제외할 2명 키 == 100인지 확인
## 리스트
heights = []
for i in range(9):
heights.append(int(input()))
total_sum = 0
for i in range(10):
result = heights[i : i + 7]
total_sum = sum(result)
print(f"i : {i} \n result : {result} \n sum : {total_sum}\n")
if total_sum == 100:
result.sort()
print(result)
import itertools
## 리스트
heights = []
for i in range(9):
heights.append(int(input()))
total_sum = 0
result = list(itertools.combinations(heights, 7))
for r in result:
total_sum = sum(r)
if total_sum == 100:
sorted_r = sorted(r)
print(sorted_r)
break
itertools.combinations(리스트, r):
- 이 함수는 주어진 리스트에서 r개의 요소를 뽑는 모든 조합을 반환
- combinations 객체는 반복자(iterator)이기 때문에, 리스트로 변환하거나 for문으로 순회하여 사용!!!
- import itertools 필요
r.sort()는 튜플에서는 사용할 수 없기 때문에 sorted()로 처리!!
📍 해설지 참고
완전 탐색은 input의 크기가 유난히 작으면서 모든 경우의 수를 탐색하는 코드 구현이 가능할 경우에!
모든 경우의 수를 빠뜨리지 않고 탐색할 수 있게 구현하는 것이 중요
import sys
def print_result(arr, a, b):
for i in range(9):
if i == a or i == b:
continue
print(arr[i])
# 1. input 받기
heights = []
for i in range(9):
heights.append(int(sys.stdin.readline())) # import sys 필요
# heights.append(int(input()))
# 2. 아홉 난쟁이 키의 합 미리 구해두기
total_sum = sum(heights)
# 3. 미리 정렬
heights.sort()
# 4. 9명 중 2명을 제외하는 모든 경우의 수를 탐색하는 for loop 구현
found = False
for i in range(9):
if found:
break
for j in range(i + 1, 9):
# 5. 제외된 2명을 빼고 총 합이 100인지 확인
now = total_sum - heights[i] - heights[j]
# 6. 100이면 출력, for loop 탈출
if now == 100:
print_result(heights, i, j)
found = True
break
sys.stdin.readline()을 왜 사용하나요?
→ 빠른 입출력을 위해 사용합니다. input()과 정확히 동일한 역할을 하지만 더 빠른 입출력을 지원!