다음과 같이 문제를 분석하였다.
여기서 시간복잡도를 보면 정렬을 할 경우 시간복잡도는 O(nlog n)이다. 즉, 배열의 길이가 100,000인 경우에는 100,000 log2(100,000) = 1,000,000이다. 이후 반복문이 O(n)의 시간복잡도를 가지기 때문에 O(100,000)이므로, 총 시간복잡도는 O(1,100,000)이라고 볼 수 있다.
위와 같은 계산을 통해 반복문과 정렬을 정상 수행하여도 적절하다고 판단하였다.
배열 정렬
for(A의 길이만큼){
if(A의 요소와 비교값을 틀리다면){
return 비교값;
}
}
반복문이 정상 종료되면
return 배열의 길이 + 1을 반환
import java.util.Arrays;
class Solution {
public int solution(int[] A) {
Arrays.sort(A);
for(int i = 0; i < A.length; i++){
if(A[i] != i + 1){
return i + 1;
}
}
return A.length + 1;
}
}