3Sum

Edit

Difficulty: MEDIUM

Categories: ๋ฐฐ์—ด/๋ฌธ์ž์—ดํˆฌํฌ์ธํ„ฐ/์Šฌ๋ผ์ด๋”ฉ์œˆ๋„์šฐ

Source: https://leetcode.com/problems/3sum/


Solutions

Add Solution
JAVA 2026-10-06 12:00 Edit
class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        Arrays.sort(nums);
        for (int i = 0; i < nums.length - 2; i++) {
            if (i > 0 && nums[i] == nums[i - 1]) continue;
            int left = i + 1, right = nums.length - 1;
            while (left < right) {
                int sum = nums[i] + nums[left] + nums[right];
                if (sum == 0) {
                    res.add(Arrays.asList(nums[i], nums[left], nums[right]));
                    while (left < right && nums[left] == nums[left + 1]) left++;
                    while (left < right && nums[right] == nums[right - 1]) right--;
                    left++; right--;
                } else if (sum < 0) {
                    left++;
                } else {
                    right--;
                }
            }
        }
        return res;
    }
}
Notes:

[์ž๋™ ํ’€์ด ยท gpt-4.1-mini] ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ ๋’ค, ํ•œ ์›์†Œ๋ฅผ ๊ณ ์ •ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋‘ ์›์†Œ๋ฅผ ํˆฌํฌ์ธํ„ฐ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ํ•ฉ์ด 0์ด ๋˜๋Š” ์„ธ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค. ์ค‘๋ณต ๊ฒฐ๊ณผ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ธํ„ฐ ์ด๋™ ์‹œ ์ค‘๋ณต ์›์†Œ๋ฅผ ๊ฑด๋„ˆ๋›ด๋‹ค. ์‹œ๊ฐ„ O(n^2) ยท ๊ณต๊ฐ„ O(n) ์ •๋ ฌ ๊ณต๊ฐ„ ๋ฐ ๊ฒฐ๊ณผ ์ €์žฅ ๊ณต๊ฐ„ ์ฃผ์˜: ์ค‘๋ณต ์›์†Œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ์ง€ ์•Š์œผ๋ฉด ์ค‘๋ณต๋œ ๊ฒฐ๊ณผ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค.