'MaxCounters'에 해당되는 글 1건

  1. 2020.03.01 [ Lesson 04_2 ] MaxCounters
1일 1코딜리티2020. 3. 1. 20:43
728x90

Code

vector<int> solution(int N, vector<int> &A) {
    // write your code in C++14 (g++ 6.2.0)
    vector<int> counter(N);
    int max_value = 0;
    
    for(int i=0;i<A.size();i++){
        if(A[i] != (N+1)){
            counter[ A[i] -1 ] += 1;
            max_value = max(max_value, counter[A[i]-1]);
        }
        else{
            for(int j=0;j<N;j++){
                counter[j] = max_value;
            }
        }
        
    }
    return counter;
}

 

Result

Time Out 에러가 났다..(๑•́₋•̩̥̀๑)

 

<문제 해결 아이디어>

N개의 카운터인 vector<int> counter(N);을 생성한다.

이때 default값인 0으로 초기화된다.

 

돌면서 A[i] != N+1일 경우 A[i]번째(index로는 A[i]-1) 카운터에 +1을한다.

그리고 counter[ A[i]-1 ]과 max_value 중 더 큰 값을 max_value에 저장한다.

(이때, 시작부터 N+1이 나와도 0000..인 상태에서 최대값은 0이므로 if를 안거치고 바로 else로 간다고 해도 무방하다.)

 

A[i] == N+1일 경우 저장해두었던 max_value로 모든 값을 초기화시킨다.

 

그리고 벡터형태로 return하라고 했으므로 return counter;를 해준다.

 

* else부분에서 counter[j] = max_value;를 해야했는데

A[j] = max_value;를 해서 계속 에러가 났다. 배열의 이름을 헷갈리지 않아야겠다.

* vector<int> v(N);을 하면 자동으로 0으로 init되는 것 같다.

반응형

'1일 1코딜리티' 카테고리의 다른 글

[ Lesson 04_4 ] PermCheck  (0) 2020.03.08
[ Lesson 04_3 ] MissingInteger  (0) 2020.03.07
[ Lesson 04_1 ] FrogRiverOne  (0) 2020.03.01
[ lesson 03_3 ] TapeEquilibrium  (0) 2020.02.27
[ Lesson 03_2 ] PermMissingElem  (0) 2020.02.27
Posted by mminky