CodeWars 스물 여섯 번째 문제
Updated:
Gap in Primes
public static long[] gap(int g, long m, long n) {
long beforePrime = Long.MIN_VALUE;
for(long i = m ; i <= n ; i++) {
if(findPrimeNumber(i)) {
if(i - beforePrime == g) {
return new long[] {beforePrime, i};
}
beforePrime = i;
}
}
return null;
}
public static boolean findPrimeNumber(long i) {
for(int j = 2 ; j < i/2 ; j++) {
if(i%j == 0) {
return false;
}
}
return true;
}
- 알고리즘으로는 어려운 것은 없다.
- 최초 코드는 beforePrime = 0 으로 초기화 시키고 if(i - beforePrime == g) 조건에 beforePrime!=0의 조건도 추가하였다. 그 이유는 첫번째 소수는 비교할 대상이 없기 때문인데 best 코드에서는 long beforePrime = Long.MIN_VALUE;로 초기화 시켜서 내가 추가한 조건을 지울 수 있었다.
- 다음에는 이런 경우 유용하게 써먹어야 겠다.