[문제 링크]
https://leetcode.com/problems/search-insert-position/description/
[문제 사고]
주어진 배열을 이분 탐색하여 주어진 목표값에 해당하는 배열의 index 값을 반환한다.
[문제 해결]
Solution - 1
1. 이분 탐색을 위한 first 값과 last 값을 선언 후 각 의미에 맞는 값을 할당해준다.
2. target 값이 nums 배열에 포함되어있지 않다면 nums 배열에 push 해주고 오름차순으로 배열을 정렬해준다.
3. 이분 탐색을 통해 target 값을 찾은 후 target 값의 index 값을 반환한다.
Solution - 2
1. target 값이 nums 배열에 포함되어있지 않다면 nums 배열에 push 해주고 오름차순으로 배열을 정렬해준다.
2. nums 배열 안에서 target 값의 인덱스 값을 indexOf method를 사용하여 반환한다.
[작성 코드]
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
//sol-1
let first = 0;
let last = nums.length - 1;
if(!nums.includes(target)) nums.push(target)
nums.sort((a,b) => a - b);
while(first <= last){
let mid = Math.floor((first+last) / 2);
if(nums[mid] === target){
return mid
}else if(nums[mid] > target){
last = mid - 1;
}else if(nums[mid] < target){
first = mid + 1;
}
return nums.indexOf(target)
}
//sol-2
if(!nums.includes(target)) nums.push(target);
nums.sort((a,b) => a - b);
return nums.indexOf(target)
};
[문제 회고]
이분 탐색을 구현하는 가장 기초적인 문제였다. 이분 탐색으로 구현하여 답을 도출해내는 데에는 무리가 없었지만 문제 자체가 너무 기본적인 문제라서 이분 탐색을 사용할 필요도 없이 더 효율적인 방법이 있어서 2번 풀이로도 풀어보았다. 이분 탐색 알고리즘에 대한 이해도가 조금 쌓인 것 같다.
'Coding Test > 항해99 - 코테 스터디 2기' 카테고리의 다른 글
99클럽 코테 스터디 23일차 TIL(6월 12일) + 자료구조 Graph (0) | 2024.06.12 |
---|---|
99클럽 코테 스터디 22일차 TIL(6월 11일) + 알고리즘 이분탐색 (1) | 2024.06.11 |
99클럽 코테 스터디 20일차 TIL(6월 9일) + 알고리즘 DP(Dynamic Programing,동적계획법) (0) | 2024.06.09 |
99클럽 코테 스터디 19일차 TIL(6월 8일) + 알고리즘 DP(Dynamic Programing,동적계획법) (0) | 2024.06.09 |
99클럽 코테 스터디 15일차 TIL(6월 4일) + 알고리즘 Greedy (1) | 2024.06.09 |