euisblue
12935. 제일 작은 수 제거하기

Level 1 제일 작은 수 제거하기

배열에서 가장 작은 수의 위치를 찾은 다음, 그 수를 제외한 숫자들을 따로 저장하는 방식.

시간 복잡도: O(N)

1#include <bits/stdc++.h> 2using namespace std; 3 4vector<int> solution(vector<int> arr) { 5 vector<int> answer; 6 int minPos = 0; 7 int min = arr[0]; 8 const int SIZE = arr.size(); 9 10 for(int i=1; i<SIZE; ++i) { 11 if(arr[i] < min) { 12 min = arr[i]; 13 minPos = i; 14 } 15 } 16 17 for(int i=0; i<SIZE; ++i) { 18 if(minPos == i) continue; 19 answer.push_back(arr[i]); 20 } 21 22 if(answer.size() == 0) answer.push_back(-1); 23 return answer; 24} 25#endif

문제를 풀고나서 std::erase()std::min_element()가 있다는 걸 알게되어 다시 풀었다.

시간 복잡도: O(N)

1#include <bits/stdc++.h> 2using namespace std; 3 4vector<int> solution(vector<int> arr) { 5 vector<int> ret = arr; 6 ret.erase(min_element(ret.begin(), ret.end())); 7 8 return (ret.size() == 0) ? vector<int>(1, -1) : ret; 9}