Published:
Updated:

  • 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