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/
풀 때 어려웠던 점 또는 느낀점 :
링크드 리스트를 다루는 연습이 되었다.
비슷한 유형의 문제들은 금방 풀 수 있을 것 같다
개선방안 :
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
return lower_bound(begin(nums),end(nums),target)-nums.begin();
}
};
Lower Bound는 데이터 내 특정 K값보다 같거나 큰 값이
처음 나오는 위치를 리턴해주는 알고리즘이다.
중복되는 원소가 여러개 있어도 상관없다.
즉, 찾고자 하는 값 이상이 처음 나타나는 위치를 찾기 위해 사용한다.
이미 구현되어 있는 기능을 사용하면 편할 것 같다.
728x90
반응형
'Problem Solving' 카테고리의 다른 글
[C++] [LeetCode 26] Remove Duplicates from Sorted Array (0) | 2021.08.09 |
---|---|
[C++] [LeetCode 704] Binary Search (0) | 2021.08.09 |
[C++] [백준 11650] 좌표 정렬하기 (0) | 2021.07.27 |
[C++] [백준 1427] 소트인사이드 (0) | 2021.07.27 |
[C++] [백준 1755] 숫자놀이 (0) | 2021.07.27 |
댓글