Skip to content

[Leetcode] 35. Search Insert Position โ€‹

Problem โ€‹

๋ฌธ์ œ ๋งํฌ

์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ํƒ€๊ฒŸ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆซ์ž๊ฐ’์„ ์ฐพ๋Š” ๋ฌธ์ œ.
์ด๋•Œ ํƒ€๊ฒŸ๊ฐ’์ด ์—†๋‹ค๋ฉด ํƒ€๊ฒŸ๊ฐ’์„ ์‚ฝ์ž…ํ–ˆ์„๋•Œ ์™€์•ผํ•  ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜๋‚ฉํ•œ๋‹ค.

Solution โ€‹

O(logn) ์œผ๋กœ ํ’€๊ธฐ์œ„ํ•ด์„œ ์ด์ง„ํƒ์ƒ‰์„ ์ด์šฉํ•จ.

์ด์ง„ํƒ์ƒ‰์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.
์ด๋•Œ ์กฐ๊ฑด์„ ์™ผ์ชฝ ์ธ๋ฑ์Šค๋Š” target๋ณด๋‹ค ์ž‘๊ฒŒ ์กฐ๊ฑด์„ ์ •์˜ํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ ์ธ๋ฑ์Šค๋ฅผ target์„ ํฌํ•จํ•œ ๋†’์€ ๊ฐ’์œผ๋กœ ์กฐ๊ฑด์„ ์žก์•„์ฃผ๋ฉด ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋ฅธ์ชฝ ๊ฐ’์€ ํƒ€๊ฒŸ์ด ์žˆ์„๊ฒฝ์šฐ ํƒ€๊ฒŸ๊ฐ’์„ ์•„๋‹๊ฒฝ์šฐ ํƒ€๊ฒŸ์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜๋‚ฉํ•˜๊ฒŒ๋œ๋‹ค. (ํƒ€๊ฒŸ๊ณผ ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ํฐ ์ˆ˜์˜ ์œ„์น˜์ด๊ธฐ ๋•Œ๋ฌธ์—)

JS Code โ€‹

javascript
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
    function binarySearch (left, right) {
        while(left < right) {
            const mid = Math.floor((left + right) / 2)
            if (nums[mid] < target) left = mid + 1
            else right = mid
        }
        return right
    }
    
    return binarySearch(0, nums.length)
};