풀이로직이 아닌 TypeError 와 같이 언어 잘못 쓴 경우
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
return binary_search(matrix.begin(), matrix.end(), target);
}
};
컴파일 에러 뜨는 이유
std::binary_search(first, last, value) : 범위 안의 원소들과 value를 직접 비교함(<)matrix.begin()~matrix.end()는 vector<int>를 원소로 가짐target은 intvector<int> < int 비교를 하게 되므로 타입이 맞지 않음 → 연산 X → 컴파일 에러class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
for (vector<int>&rows : matrix) {
if (binary_search(rows.begin(), rows.end(), target)) {
return true;
}
}
return false;
}
};
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
auto len = matrix[0].size();
for (vector<int>&rows : matrix) {
int st = 0, en = len-1;
while (st < en) {
int mid = (st + en) / 2;
if (rows[mid] < target) st = mid + 1;
else if (rows[mid] > target) en = mid - 1;
else return true;
}
}
return false;
}
};
STL 사용하지 않고 구현한 부분이 대단한 것 같습니다