[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)
};