기본 콘텐츠로 건너뛰기

코딩 테스트 - CountDiv

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;
    }
}

댓글