→ 입력값 : 배열 ex)[-1, 0, 1, 2, -1, -4]
→ 출력값 : 0을 만들 수 있는 3개의 요소 출력
중복된 값을 찾는 로직을 못만들어서 해설 참조
런타임 문제
→ 브루트 포스는 완전 탐색하는 기능으로 사실 무식하게 탐색하는 방법이다.
→ 숫자를 하나하나씩 돌아가면서 0이되는 숫자 3개의 조합을 찾는다.
→ 이 방법은 빅오가 n**3이기 때문에 좋지 않다.
→ 런타임도 문제였지만 중복값을 찾지 못해서 최종 제출 시 통과하지 못했었다.
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)