For example, given integer N = 5 and array A such that:
1 | A[0] = 3 |
the values of the counters after each consecutive operation will be:
1 | (0, 0, 1, 0, 0) |
The goal is to calculate the value of every counter after all operations.
시간복잡도 때문에 77% 에서 100%
최초에 짰을때는 문제그대로 시뮬레이션 해서 1~N 까지의 값일땐 해당 인덱스의 값을 ++ 해주고
N+1 일때 모든 인덱스의 값을 max값으로 채워줬음.
이때 모든 인덱스의 값을 채워주는 과정에서 시간이 N만큼 들어서 시간 복잡도가 A.length * N 되어버림.
그래서 min 값을 따로 두고
해당 인덱스의 값이 min 보다 크거나 같을경우 ++ ,
min 보다 작을경우 min+1 으로 대입해줌
이렇게 해주면 N+1 을 만날때마다 모든 인덱스의 값을 채우는 비효율을 개선할 수 있음.
1 | public static int[] solution(int N, int[] A) { |