알고리즘 풀이/Codility

codility - Counting Elements (MaxCounters)

배게 2019. 12. 10. 14:08
728x90

MAX counter로 


모든 원소를 MAX로 채우는 작업을 실시간으로 해주면 시간초과나서 틀림, 


MAX counter할 MAX값을 for문 끝날때까지 계속 갱신시켜주면서 


for문 탈출 후 가장 마지막에 쭉 갱신시켜주면됨




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    public int[] solution(int N, int[] A) {
        // write your code in Java SE 8
 
        int[] res = new int[N];
 
        int nowMax = 0;
        int preMax = 0;
 
        for (int i = 0; i < A.length; i++) {
            if (A[i] > N) {
                preMax = nowMax;
            } else {
                if (res[A[i] - 1> preMax)
                    res[A[i] - 1]++;
                else
                    res[A[i] - 1= preMax + 1;
 
                if (res[A[i] - 1> nowMax)
                    nowMax = res[A[i] - 1];
            }
        }
 
        for (int i = 0; i < res.length; i++) {
            if (res[i] < preMax)
                res[i] = preMax;
        }
 
        return res;
cs