[파이썬 알고리즘 인터뷰] 배열 - 세수의 합

2023. 1. 15. 19:58·알고리즘/프로그래머스
728x90

문제설명

- 배열을 입력받아 함으로 0을 만들 수 있는 3개의 엘리먼트를 출력하라.


예시

 

#입력
nums = [-1, 0, 1, 2, -1, -4]

#출력
[
[-1, 0, 1], 
【-1, -1, 2]
]

 

풀이

앞 뒤로 같은 값이 있을 경우를 대비해 sort() 함수를 사용

중복된 값이 있을수 도 있기 때문에 continue로 건너 뛴다.

세 개의 포인터를 이용하여 각각의 포인터가 이동하면서 i + j + k = 0을 찾아내서 반환을 해준다.

 

 

def three_sum(nums):
    results = []
    nums.sort()
    print(nums)
    # 앞 뒤로 같은 값이 있을 경우를 대비해 sort() 함수를 사용


    for i in range(len(nums) - 2):
        if i > 0 and nums[i] == nums[i - 1]:
            continue

        for j in range(i + 1, len(nums) - 1):
            if j > i + 1 and nums[j] == nums[j - 1]:
                continue

            for k in range(j + 1, len(nums)):
                if k > j + 1 and nums[k] == nums[k - 1]:
                    continue # 중복된 값이 있을수 도 있기 때문에 continue로 건너 뛴다.

                if nums[i] + nums[j] + nums[k] == 0:
                    # 세 개의 포인터를 이용하여 각각의 포인터가 이동하면서 i + j + k = 0을 찾아냄
                    results.append((nums[i], nums[j], nums[k]))

    return results


nums = [-1, 0, 1, 2, -1, -4]
print(three_sum(nums))

출력

/Users/hamyeong-gwan/opt/anaconda3/envs/ptu/bin/python /Users/hamyeong-gwan/Desktop/PYTHON/알고리즘/brute_force_3S.py
[-4, -1, -1, 0, 1, 2]
[(-1, -1, 2), (-1, 0, 1)]

Process finished with exit code 0
728x90

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 최빈값 구하기  (0) 2023.03.08
[프로그래머스] 배열 중앙값 구하기  (0) 2023.03.06
[프로그래머스] 분수의 덧셈 구하기  (1) 2023.03.05
[파이썬 알고리즘 인터뷰] 배열 - 빗물 트래핑  (0) 2023.01.15
[파이썬 알고리즘 인터뷰] 배열 - 두 수의 합  (0) 2023.01.15
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 배열 중앙값 구하기
  • [프로그래머스] 분수의 덧셈 구하기
  • [파이썬 알고리즘 인터뷰] 배열 - 빗물 트래핑
  • [파이썬 알고리즘 인터뷰] 배열 - 두 수의 합
bulmang
bulmang
모바일 개발자 도전
  • bulmang
    bulmang
    bulmang
  • 전체
    오늘
    어제
    • 분류 전체보기 (208)
      • 알고리즘 (68)
        • List (3)
        • Two Pointer (6)
        • Binary Search (4)
        • Prefix Sum (3)
        • Sort (4)
        • Brute Force (5)
        • Array (2)
        • String (4)
        • 프로그래머스 (12)
        • 백준 (9)
        • Queue (2)
        • Stack (2)
        • Recursion (12)
      • Computer Science (16)
        • Computer Architecture (6)
        • Operating System (5)
        • Network (2)
        • 기타 (2)
        • System Programming (1)
      • Swift (70)
        • 개발 (24)
        • 정리 (25)
        • 문법 (20)
      • Flutter (24)
      • 기타 (12)
        • 후기 (12)
      • Git (6)
      • Ios 오픈소스 (5)
      • UI 디자인 (5)
      • AppleScript (2)
  • 링크

    • Notion
    • Github
  • 태그

    자료구조
    문법
    IOS
    피플
    코딩테스트
    개발
    SwiftUI
    FLUTTER
    협업
    Swift
    Java
    컴퓨터구조
    백준
    Apple Developer Academy
    riverpod
    Xcode
    알고리즘
    today i learned
    til
    재귀
  • 최근 댓글

  • 최근 글

  • 인기 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.2
bulmang
[파이썬 알고리즘 인터뷰] 배열 - 세수의 합
상단으로

티스토리툴바