์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/PYTHON

[ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] LeetCodeใ€3Sumใ€‘

2023. 3. 19. 15:56
 

3Sum - LeetCode

Can you solve this real interview question? 3Sum - Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0. Notice that the solution set must not contain du

leetcode.com


์ž๋ฐ” ์ฝ”๋“œ

import java.util.*;
class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        Arrays.sort(nums);
        Set<List<Integer>> set = new HashSet<>();
        List<List<Integer>> ans = new ArrayList<>();
        
        for(int i=0;i<nums.length;i++){
          int left = i+1;
          int right = nums.length-1;

          while(left<right){
            int sum = nums[i]+nums[left]+nums[right];

            if(sum == 0){
              set.add(Arrays.asList(nums[i],nums[left],nums[right]));
              left+=1;
              right-=1;
            }else if(sum<0){
              left+=1;
            }else{
              right-=1;
            }
          }
        }
        ans.addAll(set);
        return ans;
    }
}

ํŒŒ์ด์ฌ ์ฝ”๋“œ

class Solution(object):
    def threeSum(self, nums):
        
        nums.sort()
        _set = set()
        for i,num in enumerate(nums):
          left = i+1
          right = len(nums)-1

          while left<right:
            _sum = num+nums[left]+nums[right]
            if _sum==0:
              _set.add((num,nums[left],nums[right]))
              left+=1
              right-=1
            elif _sum<0:
              left+=1
            else:
              right-=1

        return list(_set)

๋จผ์ € nums ๋ฅผ ์ •๋ ฌํ•ด์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ค€๊ฐ’์„ ์ œ์™ธํ•œ 2๊ฐœ์˜ ํฌ์ธํ„ฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ค€๊ฐ’ + ์™ผ์ชฝ ํฌ์ธํ„ฐ ๊ฐ’ + ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ ๊ฐ’ ์ด 0์ธ ๊ฒฝ์šฐ๋Š” set์— ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ -1, ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ +1 ํ•ด์ค€๋‹ค.

 

0๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ •๋ ฌ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ 1 ์ฆ๊ฐ€์‹œ์ผœ์„œ ํ™•์ธํ•ด๋ณธ๋‹ค.

 

0๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ 1 ๊ฐ์†Œ์‹œ์ผœ์„œ ํ™•์ธํ•ด๋ณธ๋‹ค.

 

 

 

์˜ˆ์‹œ๋กœ ๋ณด๋ฉด,

 

[-1, 0, 1, 2, -1, -4] ๊ฐ€ ์žˆ์„ ๋•Œ, ์ •๋ ฌํ•˜๋ฉด [-4, -1, -1, 0, 1, 2] ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ๊ธฐ์ค€์„ -4๋กœ ์žก๊ณ  3๊ฐœ์˜ ์›์†Œ์˜ ํ•ฉ์ด 0์ด ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.

 

      L               R

-4  -1  -1  0  1  2

 

์œ„์™€ ๊ฐ™์ด ์™ผ์ชฝ ํฌ์ธํ„ฐ L์ด -1 ์ด๊ณ  ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ R์ด 2๋ผ๋ฉด, -4+-1+2 = -3 ์ด๊ณ , 0๋ณด๋‹ค ์ž‘๋‹ค.

 

ํ•ฉ์ด 0๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ๋Š” L๋งŒ ์ฆ๊ฐ€ ์‹œํ‚จ๋‹ค. 

 

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๊ณ„์† ํƒ์ƒ‰ํ•ด๋ณธ๋‹ค.

 

-4๊ฐ€ ๊ธฐ์ค€์ผ๋•Œ๋Š” 3 ์›์†Œ์˜ ํ•ฉ์ด 0์ด ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

๋งŒ์•ฝ -1์ด ๊ธฐ์ค€์ผ๋•Œ๋Š”

 

            L         R

-4  -1  -1  0  1  2

 

-1 + -1 + 2 = 0 ์ด ๋˜๋ฏ€๋กœ, set์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

ํ•ฉ์ด 0์ด ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” L๋„ +1 ํ•ด์ฃผ๊ณ  R๋„ -1 ํ•ด์ค€๋‹ค.

 

               L  R

-4  -1  -1  0  1  2

 

-1 + 0 + 1 ๋„ ํ•ฉ์ด 0์ด๋ฏ€๋กœ set์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

 

 

๊ทธ ๋‹ค์Œ ๊ธฐ์ค€๊ฐ’๋„ -1์ธ๋ฐ

 

               L      R  

-4  -1  -1  0  1   2

 

์œ„ ๊ฒฝ์šฐ๋Š” -1 + 0 + 2 ์ด๋ฏ€๋กœ 0๋ณด๋‹ค ํฌ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

 

               L  R 

-4  -1  -1  0  1  2

 

์œ„ ์ƒํ™ฉ์ด -1 + 0 + 1 ์ด๋ผ์„œ ํ•ฉ์ด 0์ด๊ณ , set์— ์ถ”๊ฐ€ํ•˜๋ฉด๋œ๋‹ค.

 

์ด๋ฏธ ์ถ”๊ฐ€๋˜์–ด์žˆ์ง€๋งŒ, set ์ž๋ฃŒ๊ตฌ์กฐ ํŠน์„ฑ ์ƒ ์ค‘๋ณต์œผ๋กœ ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค.

 

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/PYTHON' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] LeetCodeใ€Coin Changeใ€‘
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] LeetCodeใ€Container With Most Waterใ€‘
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] LeetCodeใ€Search in Rotated Sorted Arrayใ€‘
    • [ํŒŒ์ด์ฌ PYTHON] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šคใ€๋ฌด์ง€์˜ ๋จน๋ฐฉ ๋ผ์ด๋ธŒใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”