백준 2309번 python 풀이 - 일곱 난쟁이
문제 링크
해결책
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys
dwarf_height_list = []
height_sum = 0
def printDwarf(dwarf_height_list):
for i in range(8):
for j in range(i + 1, 9):
if height_sum - dwarf_height_list[i] - dwarf_height_list[j] == 100:
for k in range(9):
if k != i and k != j:
print(dwarf_height_list[k])
return
for i in range(9):
dwarf_height_list.append(int(sys.stdin.readline()))
for i in range(9):
height_sum += dwarf_height_list[i]
dwarf_height_list.sort()
printDwarf(dwarf_height_list)
주석으로 달 설명
탐색 문제. 크게 특별할 건 없고, 리스트의 요소 중 두개를 잡는 부분에서 조금 시간을 단축시켰다. 모든 요소를 도는 방식이 아닌, 마치 버블 정렬시에 사용하는 전체 중 두개를 선택하는 이중 for 문을 이용해 요소를 선별하여, 단순한 N^2에서 시간을 조금이나마 줄여봤다.
This post is licensed under CC BY 4.0 by the author.