코딩테스트

[2023-02-09]

nayoon 2023. 2. 9. 22:09

Start

ChocolatesByNumbers 문제

 

N과 M의 최대 공약수를 구해야하는 문제였다.

유클리드 호제법을 이용해서 빠르게 최대 공약수를 구했다.

 

CommonPrimeDivisors 문제

각각 나눠지는 소수가 같은지 파악하는 문제이다. 

아니 근데..왜이렇게 풀었는지 이해가 안간다..

// you can also use imports, for example:
import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
    public int solution(int[] A, int[] B) {
        int result = 0, size = A.length;

		// 소수를 구하기 위한 배열 초기화
        boolean[] prime = new boolean[6001];
        // 에라토스테네스의 체로 소수 구하기
        for(int i = 2; i <= 6000; i++) {
            if (prime[i]) {
                continue;
            }
            for(int j = i + i; j <= 6000; j+=i) {
                prime[j] = true;
            }
        }
        
        for(int i = 0; i < size; i++) {
            int a = 0, temp = 0;
            int n = A[i], m = B[i];
            int max = A[i];
            
            if (n < m) {
                n = B[i];
                m = A[i];
                max = B[i];
            }
            
            // 최대공약수 구하기
            while(true) {
                if (n % m == 0) {
                    temp = m;
                    break;
                }
                a = m;
                m = n % m;
                n = a;
            }
            // 구한 최대 공약수가 1이면 prime divisor가 아니라고 생각했다.
            if (temp != 1) {
            	// 구한 최대 공약수로 세트 중 더 큰 수에 나눈다.
                int t = max / temp;
                // 일단 result값을 1 높인 다음 조건을 통과하지 못하면 1 빼기로 했다.
                result++;
                for(int j = 2; j <= 6000; j++) {
                	나눈 수가 소수로 나눠떨어지는데 세트 중 더 작은 수에도 나눠떨어질 경우.. (를 하고 싶었는데.. 영 다른 거 한듯..)
                    if (t % j == 0) {
                        if (!prime[j] && temp % j != 0 || !prime[t / j] && temp % (t/j) != 0) {
                            result--;
                            break;
                        }
                    }
                }
            }
        }

        return result;
    }
}

 

머리아파라ㅜㅜㅜ

'코딩테스트' 카테고리의 다른 글

[2023-02-15]  (0) 2023.02.15
[2023-02-13]  (0) 2023.02.13
[2023-01-26]  (0) 2023.01.26
[2023-01-24]  (0) 2023.01.24
[2023-01-21]  (0) 2023.01.21