- Reference
- 정답이 여러 가지인 경우에는 아무거나 출력하라는 조건 때문에 쉽게 풀 수 있었다.
set()
을 이용하여 풀도록 노력해 봤는데 중복 제거를 모두 제거하려면 set()
은 부적절한 방법이라는 것을 깨달았다.
- 브루트포스가 아닌, for문 안에서 바로 리턴해주고 싶어서 온갖 방법을 다 써봤다. (
remove()
하면 index 오류가 나기 때문)
- 결론적으로 answer이라는 객체를 추가적으로 생성하게 됐다.
- 이게 더 빠를지, 완전 탐색으로 다 돌아주고 단순하게
remove()
만 하는 게 빠를지.. 의문이다.
Solution
from typing import List
def solution(heights: List[int]) -> List[int]:
sum_heights = sum(heights)
for i in range(len(heights)):
# set으로 하는 게 배열 중복 제거 중 가장 빠른 방법임
for j in range(i + 1, len(heights)):
if sum_heights - heights[i] - heights[j] == 100:
answer = heights.copy()
answer.remove(heights[i])
answer.remove(heights[j])
return sorted(answer)
array = []
for _ in range(9):
array.append(int(input()))
print(*solution(array), sep='\n')
Leave a comment