본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1284 : 암호 해독

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1284 : 암호 해독 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

어떤 수 n이 입력된다.(단, 1<=n<=10,000,000)

출력

n을 두 소수의 곱으로 나타낼 수 있으면 두 수를 오름차순으로 출력한다.
(단, 가능한 소수 중 가장 작은 소수와의 곱으로 나타낸다.)
하고, 그렇지 않으면 "wrong number"를 출력한다.

예시

  • 입력 : 21
  • 출력 : 3 7

Solution (풀이)

  • 풀이 : 메모리 11192, 시간 75
class PrimeNumber {
    public boolean isPrimeNumber(int n) {
        if (n==2) {    // 2는 무조건 소수임으로 바로 return
            return true;
        } else if (n%2==0) {
            return false;
        }

        for (int i=3; i<n; i+=2) { // 2일때는 위에서 처리했음으로 3부터
            if(n%i==0) {
                return false;
            }
        }
        return true;
    }
}
public class Answer1 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        PrimeNumber pn = new PrimeNumber();
        String result="wrong number";

        for (int i=2; i<n; i++) {
            if (n%i==0) {    // 나누어 떨어질 때 소수인지 메소드 호풀을 통해 판단
                if (pn.isPrimeNumber(i)) {
                    int j = n/i;
                    if(pn.isPrimeNumber(j)) {
                        result = i+" "+j;
                        break;
                    }
                }
            }
        }
        System.out.println(result);
    }
}

Ranking(순위)

반응형