우규이인우윀
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/LeetCode 150

[Java] 35. Search Insert Position

2023. 8. 28. 13:06

문제 νŒŒμ•…

μ€‘λ³΅λ˜μ§€ μ•ŠλŠ”, μ •λ ¬λœ μ •μˆ˜ 배열이 μ£Όμ–΄μ§„λ‹€.

 

target 에 ν•΄λ‹Ήν•˜λŠ” μ›μ†Œμ˜ μœ„μΉ˜λ‚˜, μ—†λ‹€λ©΄ μ‚½μž…ν–ˆμ„λ•Œ 정렬을 μœ μ§€ν•  수 μžˆλŠ” 인덱슀의 μœ„μΉ˜λ₯Ό λ°˜ν™˜ν•΄μ•Όν•œλ‹€.

 

그리고 μ‹œκ°„ λ³΅μž‘λ„λŠ” O(logN) 이어야 ν•œλ‹€.

 


풀이

1️⃣ 이뢄 탐색

πŸ’‘ λ– μ˜€λ₯Έ Idea

μ‹œκ°„ λ³΅μž‘λ„λ₯Ό O(logN) 으둜 ν•΄μ•Όν•œλ‹€λŠ” 말을 보자마자, μ΄λΆ„νƒμƒ‰μœΌλ‘œ ν•΄κ²°ν•΄μ•Όκ² κ΅¬λ‚˜ 생각이 λ“€μ—ˆλ‹€.

이뢄탐색을 κ΅¬ν˜„ν•΄μ„œ, target 이 λ“€μ–΄κ°ˆ 수 μžˆλŠ” μ μ ˆν•œ μœ„μΉ˜λ₯Ό 찾으면 λœλ‹€.

 

numsκ°€ μ •λ ¬λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ—

 

target이 nums의 μ–΄λ– ν•œ μ›μ†Œλ³΄λ‹€ μž‘κ±°λ‚˜ 큰 κ²½μš°λŠ” μ•žμ„ μ—μ„œ μ²˜λ¦¬ν•΄μ£Όμ—ˆλ‹€.

 

μ΄λΆ„νƒμƒ‰μ—μ„œλŠ”, 정렬을 μœ μ§€ν•˜λ©΄μ„œ target κ°’ μ΄ν•˜λ₯Ό 배열에 μž…λ ₯ν•  수 μžˆλŠ” 인덱슀λ₯Ό λ°˜ν™˜ν•˜λ„λ‘ κ΅¬μ„±ν•˜μ˜€λ‹€.

 

class Solution {
    public int searchInsert(int[] nums, int target) {

        if (target < nums[0]) {
            return 0;
        } else if (target > nums[nums.length - 1]) {
            return nums.length;
        }

        int left = 0, right = nums.length - 1;

        while (left < right) {
            int mid = (left + right) / 2;
            if (target <= nums[mid]) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
}

 

κ²°κ³Ό

 


πŸ“– 회고

μ˜ˆμ „μ— 많이 μ—°μŠ΅ν•΄λ³΄μ•˜λ˜ 이뢄 νƒμƒ‰μ˜ κ°€μž₯ 기초적인 λ¬Έμ œλΌμ„œ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆμ—ˆλ‹€.

 

κΈ°λ³Έ 문제λ₯Ό ν’€μ–΄λ³΄λ©΄μ„œ, μ΄λΆ„νƒμƒ‰μ˜ 원리λ₯Ό λ‹€μ‹œ 생각해 λ³Ό 수 μžˆμ–΄μ„œ 쒋은 μ‹œκ°„μ΄μ—ˆλ‹€.

    'πŸ‘¨πŸ»‍πŸ’» PS/LeetCode 150' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [Java] 155. Min Stack
    • [Java] 74. Search a 2D Matrix
    • [Java] 21. Merge Two Sorted Lists
    • [Java] 2. Add Two Numbers
    우규이인우윀
    우규이인우윀
    개발자 κΏˆλ‚˜λ¬΄

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”