IT/Algorithm

leetCode) 35. Search Insert Position

프티 2021. 11. 26. 14:08
반응형

https://leetcode.com/problems/search-insert-position/

 

Search Insert Position - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

나의 풀이)

시간 복잡도를 생각하지 않고 푼 코드는 다음과 같다.

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
    let index = 0;
    
    while (true) {
        if (nums[index] < target) {
            if (index === nums.length - 1) {
                return nums.length;
                continue;
            }
            
            index += 1;
            continue;
        }
        
        return index;
    }
};

시간 복잡도를 고려하여 알고리즘을 풀어본 경험이 거의 없었다는 것을 알게 되었고,

검색 결과 이진 탐색으로 풀어내신 분의 글을 읽게 되었다.

 

그래서 나도 이진 탐색으로 풀어보았다.

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
    if (target <= nums[0]) {
        return 0;
    }
    
    let start = 0;
    let end = nums.length - 1;
    let mid = null;
    
    while (start <= end) {
        mid = Math.floor((start + end) / 2);
        
        if (nums[mid] === target) {
            return mid;
        }
        
        if (nums[mid] > target) {
            end = mid - 1;
            continue;
        }
        
        start = mid + 1;
    }
    
    return start;
};

제대로 풀었다는 느낌이 들었고, 이진 탐색 알고리즘을 실제로 적용해보았던 점이 보람찼던 것 같다.

반응형

'IT > Algorithm' 카테고리의 다른 글

leetCode) 21. Merge Two Sorted Lists  (0) 2021.11.27
프로그래머스) 카펫  (0) 2021.11.26
프로그래머스) 프린터  (0) 2021.11.24
프로그래머스) 구명보트  (0) 2021.11.23
프로그래머스) 큰 수 만들기  (0) 2021.11.21