์šฐ๊ทœ์ด์ธ์šฐ์œค
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 ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค
๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/LeetCode 150

[Java] 167. Two Sum II - Input Array Is Sorted

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/LeetCode 150

[Java] 167. Two Sum II - Input Array Is Sorted

2023. 8. 26. 13:04

๋ฌธ์ œ ํŒŒ์•…

 

๋น„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด numbers ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

๋ฐฐ์—ด์—์„œ target ๊ฐ’์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ’ 2๊ฐœ๋ฅผ ์ฐพ์•„, ํ•ด๋‹น ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ( index1 < index2 )

 


 

ํ’€์ด

 

1๏ธโƒฃ ํˆฌ ํฌ์ธํ„ฐ ๋ฐฉ์‹

๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea

์ธ๋ฑ์Šค 0 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” left ์™€ ๋ฐฐ์—ด์˜ ๋์—์„œ ์‹œ์ž‘ํ•˜๋Š” right ํฌ์ธํ„ฐ๋ฅผ ์ •์˜ํ•œ ๋’ค,

๋‘ ๊ฐ’์˜ ํ•ฉ์ด target ๋ณด๋‹ค ํฌ๋ฉด right ํฌ์ธํ„ฐ๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๊ณ  target๋ณด๋‹ค ์ž‘์œผ๋ฉด left ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋  ๊ฒƒ์ด๋ผ ํŒ๋‹จํ–ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด, ๋น„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๊ณ  ์ •๋‹ต์ด ๋ฌด์กฐ๊ฑด ์กด์žฌํ•˜๋Š” ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹œ๊ฐ„๋ณต์žก๋„๋„ O(N) ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int left = 0, right = numbers.length - 1;

        while (left < right) {
            int sum = numbers[left] + numbers[right];
            if (sum > target) {
                right--;
            } else if (sum == target) {
                break;
            } else {
                left++;
            }
        }
        return new int[]{left + 1, right + 1};
    }
}

 

Medium ๋ฌธ์ œ ์น˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๊ฒฐ๊ณผ

 

 

 

 

2๏ธโƒฃ ์ด๋ถ„ํƒ์ƒ‰ ํ’€์ด

๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea

๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ณ ์ •์œผ๋กœ ๋‘๊ณ , ๊ทธ ์ดํ›„์˜ ๊ฐ’๋“ค ์ค‘์—์„œ ๋”ํ–ˆ์„ ๋•Œ target ์ด ๋˜๋Š” ๊ฐ’์„ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ์ฐพ์œผ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๋ฐฐ์—ด์˜ ๊ธธ์ด๋„ ์ตœ๋Œ€ 30000 ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์‹œ๊ฐ„ ๋ณต์žก๋„ O(NlogN) ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int[] ans = null;
        for (int i = 0; i < numbers.length; i++) {
            int fixed = numbers[i];
            int find = target - fixed;

            int result = bs(numbers, i + 1, find);
            if (result != -1) {
                ans = new int[]{i + 1, result + 1};
            }

        }
        return ans;

    }

    private int bs(int[] numbers, int start, int target) {
        int left = start, right = numbers.length - 1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (target < numbers[mid]) {
                right = mid - 1;
            } else if (target == numbers[mid]) {
                return mid;
            } else {
                left = mid + 1;
            }
        }

        return -1;

    }
}

 

 

 

i ๋ฒˆ์งธ ์›์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ๋”ํ–ˆ์„ ๋•Œ target ์ด ๋˜๋Š” ์ˆ˜๋ฅผ i+1 ๋ฒˆ์งธ ๋ถ€ํ„ฐ ์ด๋ถ„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

๊ฒฐ๊ณผ

 

์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์˜ˆ์ƒํ•œ๋Œ€๋กœ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 


๐Ÿ“– ํšŒ๊ณ 

 

์ด๋ถ„ ํƒ์ƒ‰ ํ’€์ด๋ฅผ ๋„์ „ํ•ด์„œ ๊ตฌํ˜„ํ•ด๋ดค๋Š”๋ฐ, ํ†ต๊ณผ๋˜์–ด์„œ ๋ฟŒ๋“ฏํ–ˆ๋‹ค.

 

๋˜ํ•œ, ๋‹ค๋ฅธ ์œ ํ˜• ์ ‘๊ทผ๋ฒ•์„ ํ™œ์šฉํ•จ์œผ๋กœ์„œ ์‘์šฉ๋ ฅ์ด ์˜ฌ๋ผ๊ฐ„ ๊ธฐ๋ถ„์ด์—ˆ๋‹ค.

 

ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋ฅผ ๋‹ค์–‘ํ•œ ์ ‘๊ทผ๋ฒ•์œผ๋กœ ์‹œ๋„ํ•˜๋Š” ๋…ธ๋ ฅ์„ ์•ž์œผ๋กœ๋„ ํ•ด๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

  • ๋ฌธ์ œ ํŒŒ์•…
  • ํ’€์ด
  • 1๏ธโƒฃ ํˆฌ ํฌ์ธํ„ฐ ๋ฐฉ์‹
  • ๊ฒฐ๊ณผ
  • 2๏ธโƒฃ ์ด๋ถ„ํƒ์ƒ‰ ํ’€์ด
  • ๊ฒฐ๊ณผ
  • ๐Ÿ“– ํšŒ๊ณ 
'๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/LeetCode 150' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] 3. Longest Substring Without Repeating Characters
  • [Java] 209. Minimum Size Subarray Sum
  • [Java] 125. Valid Palindrome
  • [Java] 55. Jump Game
์šฐ๊ทœ์ด์ธ์šฐ์œค
์šฐ๊ทœ์ด์ธ์šฐ์œค
๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.