MaxCounters
Calculate the values of counters after applying all alternating operations: increase counter by 1; set value of all counters to current maximum.
Task Score
100%
Correctness
100%
Performance
100%
correctness 100%에 performance 0% 결과.. 시간복잡도 제한이 O(N+M) 인데 O(N*M) 이 나와버려서 40대의 점수가 나와버렸다. ㅠㅠ
루프 하나에서 모든 값처리를 다 하려고 했던게 요인인 것 같다.
x
// you can also use imports, for example:import java.util.*;// you can write to stdout for debugging purposes, e.g.// System.out.println("this is a debug message");class Solution { public int[] solution(int N, int[] A) { int[] result = new int [N]; int max = 0; for (int i = 0; i < A.length; i++) { if (A[i] >= 1 && A[i] <= N) { result[A[i] - 1]++; if (max < result[A[i] - 1]) max = result[A[i] - 1]; } if (A[i] > N) { final int MAX = max; Arrays.setAll(result, (inex) -> MAX); } } return result; }}
다시 작성한 코드. 점수를 보고 너무 충격을 받아 내 것은 꺼두고 다른사람의 코드를 훑어보니 다들 temp를 하나 두고 하는 것 같았다. 그래서 나도 temp와 max 두개로 나누어 만들어놓고 시작했다.
위에서는 한 루프 내에서 increase(X)와 max counter를 순서대로 한 번에 처리하려고 했는데, 때가 왔을 때 값을 한방에 일괄적으로 맞춰주는 것이 아니라, max값을 정해놓고 매 순번마다 max값보다 작은지 큰지 체킹하고 값을 더해줬다. 그래도 값이 max값보다 작은 것들은 for loop를 한번 더 돌면서 체크해줬다.
다른사람의 코드를 훑어보고, 다시 문제를 풀어나가면서 더 유연하게, 융통성있게 생각하는 법을 연습해야겠다고 느꼈다.
x
// you can also use imports, for example:// import java.util.*;// you can write to stdout for debugging purposes, e.g.// System.out.println("this is a debug message");class Solution { public int[] solution(int N, int[] A) { int[] result = new int[N]; int tempNum = 0; int maxNum = 0; for (int i = 0; i < A.length; i++) { if (A[i] > N) { maxNum = tempNum; continue; } if (result[A[i] - 1] < maxNum) result[A[i] - 1] = maxNum; result[A[i] - 1]++; if (result[A[i] - 1] > tempNum) tempNum = result[A[i] - 1]; } for (int i = 0; i < N; i++) { if (result[i] < maxNum) result[i] = maxNum; } return result; }}
'공부 > algorithm' 카테고리의 다른 글
| [codility] PassingCars (0) | 2018.05.23 |
|---|---|
| [codility] CountDiv (3) | 2018.05.23 |
| [codility] PermCheck (0) | 2018.05.23 |
| [codility] MissingInteger (0) | 2018.05.23 |
| [codility] FrogRiverOne (0) | 2018.05.23 |
댓글