문제

→ 입력값 : 배열 ex)[-1, 0, 1, 2, -1, -4]

→ 출력값 : 0을 만들 수 있는 3개의 요소 출력

문제점

중복된 값을 찾는 로직을 못만들어서 해설 참조

런타임 문제

접근 방법

방법 1 - 브루트 포스 풀이 방법

→ 브루트 포스는 완전 탐색하는 기능으로 사실 무식하게 탐색하는 방법이다.

→ 숫자를 하나하나씩 돌아가면서 0이되는 숫자 3개의 조합을 찾는다.

→ 이 방법은 빅오가 n**3이기 때문에 좋지 않다.

Untitled

Untitled

가장 어려웠던 부분

→ 런타임도 문제였지만 중복값을 찾지 못해서 최종 제출 시 통과하지 못했었다.

for i in range(len(nums) - 2):
    # 자기 포함하지 않으면서 앞뒤로 중복인 경우에 continue로 아래 코드 생략
    if i > 0 and nums[i] == nums[i - 1]:
			continue

코드 구현

# 첫번째 숫자 반복문 실행
for i in range(len(nums) - 2):
    # 자기 포함하지 않으면서 앞뒤로 중복인 경우에 continue로 아래 코드 생략
    if i > 0 and nums[i] == nums[i - 1]:
        continue
    # 두번째 숫자 반복문 실행
    for j in range(i + 1, len(nums) - 1):
        # 자기 포함하지 않으면서 앞뒤로 중복인 경우에 continue로 아래 코드 생략
        if j > i + 1 and nums[j] == nums[j - 1]:
            continue
        # 세번째 숫자 반복문 실행
        for k in range(j + 1, len(nums)):
            # 자기 포함하지 않으면서 앞뒤로 중복인 경우에 continue로 아래 코드 생략
            if k > j + 1 and nums[k] == nums[k - 1]:
                continue
            # 세 숫자의 합이 0일경우
            if nums[i] + nums[j] + nums[k] == 0:
                results.append([nums[i], nums[j], nums[k]])

print(results)