Codility는 코드 자체를 짜는 것보다 시간 복잡도를 최소화 하도록 수학적인 걸 가미해야 함...
(근데 사실 코딩 테스트는 암기 과목 같은 거라고 누가 그러시더라구요.)
프로그래머스 쪽에 이런 비슷한 문제면 조건문 걸어서 for문을 안 돌리면 안되는 구조로 어떻게든 만든 다음에 Stream 쓰면 시간 복잡도 확 내려버리는 경우가 많았음!
난수가 많은 경우에는 솔직히 찍어 보면 ParallelSort 가 더 빨랐는데 왜 시간 복잡도 초과하죠...
Sort, ParallelSort, for, while, do-while 의 경우의 문제는 실질적으로 ParallelSort가 월등하게 빨랐으므로 4솔이라고 생각합니다...★
package codility;
public class CountDiv_221217 {
public static void main(String[] args) {
int A = 6;
int B = 11;
int K = 2;
solution(A, B, K);
}
public static int solution(int A, int B, int K) {
int answer = 0;
/*
for(int i = A; i <= B; i++){
if(i%K==0){
answer++;
}
}
*/
//이렇게 짜겠지만 시간 복잡도 생각하면
answer = B/K - A/K; // 나눠지는 거 계산하는 거 자체가 0~B까진데 0~A까지 뺴주면 됨
if(A % K == 0){
answer++; //A가 같이 나눠지면 추가해줘야 함
}
return answer;
}
}
댓글
댓글 쓰기