본문 바로가기
Problem Solving

[C++] [LeetCode 35] Search Insert Position

by tls1107 2021. 8. 9.
728x90
반응형


문제 풀기 전 생각 : 

/*
find 함수를 사용해서 해당 타겟이 존재하는지 판별
만약 존재한다면 타겟의 인덱스를 리턴
존재하지 않는다면 반복문으로 타겟보다 큰 값이 나올때 
검색하다 발견하면 리턴
마지막까지 타겟이 크다면 입력받은 백터의 크기를 리턴
*/

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        auto it = find(nums.begin(), nums.end(), target);
        if(it != nums.end()) 
            return it-nums.begin();
        for(int i=0 ; i<nums.size() ; i++){
            if(nums[i] > target) return i;
        }
        return nums.size();
    }
};

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


풀 때 어려웠던 점 또는 느낀점 :

링크드 리스트를 다루는 연습이 되었다.

비슷한 유형의 문제들은 금방 풀 수 있을 것 같다


개선방안 :

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
         return lower_bound(begin(nums),end(nums),target)-nums.begin();
    }
};

Lower Bound는 데이터 내 특정 K값보다 같거나 큰 값이 

처음 나오는 위치를 리턴해주는 알고리즘이다. 

중복되는 원소가 여러개 있어도 상관없다. 

즉, 찾고자 하는 값 이상이 처음 나타나는 위치를 찾기 위해 사용한다.

 

이미 구현되어 있는 기능을 사용하면 편할 것 같다.

728x90
반응형

댓글