[C++] Programmers 같은 숫자는 싫어 Lv1

Date:     Last Updated:

출처: Programmers
같은 숫자는 싫어

풀이 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <vector>
#include <iostream>

using namespace std;

vector<int> solution(vector<int> arr) 
{
    vector<int> answer;
    int checkValue = arr[0];
    
    for(int i = 1; i < arr.size(); i++){
        if(checkValue == arr[i]){
            arr.erase(arr.begin() + i);
            i--;
        }
        else{
            checkValue = arr[i];
        }
    }
    
    answer = arr;
    return answer;
}

결과. 정확성:O, 효율성:X
효율성은 1개도 통과 못했다.
반복문을 2개 겹쳐서 사용한 것도 아니고 1차 반복문인데도 통과를 못하거보니
일부러 최대한 효율적으로 코드를 짜야하는 듯

풀이 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <vector>
#include <set>
#include <iostream>

using namespace std;

vector<int> solution(vector<int> arr) 
{
    vector<int> answer;
    set<int> checkValue;
    answer.push_back(arr[0]);
    
    for(int value : arr){
        if(answer.back() != value){
            answer.push_back(value);
        }
    }
    return answer;
}

결과. 정확성:O, 효율성:O 개인적으로는 풀이 1과 뭐가 크게 다른지 모르겠다. 분명히 간결해지긴 했는데 크게 차이나는 부분은 없어보이는데..
if else문의 조건비교 시간보다는 asnwer = arr 이 부분에서 할당하는 시간이 많은 것 같다.


맨 위

Leave a comment