반응형
Q. 1부터 순차적으로 올라가는 순서 무작위 배열 값 중에서 연속되지 않고 빠진 숫자를 찾으세요.
A = {2, 3, 1, 5}
A. 4
값이 1씩 올라가므로 전체 합을 구하는 공식으로 원래 나와야 할 총계를 구한 다음에
long actVal = A.length * (A.length + 1) / 2;
long sumVal = 0;
for(int i : A){
sumVal = sumVal + i;
}
return (int)((A.length + 1) - (sumVal - actVal));
}
실제 값을 구해서 차이를 구하면 어떤 값이 빠졌는지 알 수 있다.
public int solution(int[] A) {
long actVal = A.length * (A.length + 1) / 2;
long sumVal = 0;
for(int i : A){
sumVal = sumVal + i;
}
return (int)((A.length + 1) - (sumVal - actVal));
}
eclipse에서 실행하면 100,000 자리까지 가도 정상적으로 잡아 내는데,
codility에서 제출해서 걔들이 돌린거 보면 오류가 났다고 한다. 왜 그런지 모르겠다.. -.-
[100,000자리 만들어 내기]
int[] A = new int[100000];
for(int i = 0 ; i < 100000 ; i++){
A[i] = i + 1;
}
A[10] = 100001;
반응형
댓글