-
[hackerRank] primChecker알고리즘 2021. 2. 28. 19:48
문제
www.hackerrank.com/challenges/prime-checker/problem
접근방법
- 소수를 판별해 내는 문제이다
- 1보다 크고, 1과 자신외의 약수를 가지지 않는 수 ex) 2,3,5,7..
- 사람들이 푼걸 보니, BigInteger.valueOf(number).isProbablePrime() 을 많이 쓰기도 하는것 같다 .
package com.cm; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; /** * https://www.hackerrank.com/challenges/prime-checker/problem * * 자바 리플렉션(Reflection)이란 컴파일된 자바 코드에서 역으로 클래스를 불러서 메소드(Method) 및 변수(Field)를 구해오는 방법으로 * 클래스를 동적 로딩하여 사용할때 많이 사용되고 디컴파일할때에도 자주 사용되는 기법이다. * */ public class PrimeChecker { class Prime{ public void checkPrime(int... n1) { for(int n : n1){ if (isPrime(n)){ System.out.print(n+" "); } } System.out.println(""); } public boolean isPrime(int n){ boolean prime = true; if(n<2){ return false; } for (int i = 2; i < n; i++) { if (n % i == 0) { // 나누어 나머지 값이 떨어지면 소수 아님 prime = false; break; } } return prime; } } public PrimeChecker() { solution(); } public void solution(){ try{ InputStream in = System.in; BufferedReader br=new BufferedReader(new InputStreamReader(in)); int n1=Integer.parseInt(br.readLine()); int n2=Integer.parseInt(br.readLine()); int n3=Integer.parseInt(br.readLine()); int n4=Integer.parseInt(br.readLine()); int n5=Integer.parseInt(br.readLine()); Prime ob=new Prime(); ob.checkPrime(n1); ob.checkPrime(n1,n2); ob.checkPrime(n1,n2,n3); ob.checkPrime(n1,n2,n3,n4,n5); Method[] methods=Prime.class.getDeclaredMethods(); Set<String> set=new HashSet<>(); boolean overload=false; for(int i=0;i<methods.length;i++) { if(set.contains(methods[i].getName())) { overload=true; break; } set.add(methods[i].getName()); } if(overload) { throw new Exception("Overloading not allowed"); } } catch(Exception e) { System.out.println(e); } } }
'알고리즘' 카테고리의 다른 글
[hackerRank] JavaComparator (0) 2021.02.25 [hackerRank] JAVA Stack (0) 2020.10.26 [hackerRank] StringReverse (0) 2020.10.06 [hackerRank] datatypes (0) 2020.09.29 [hackerRank] AppleAndOrange (0) 2019.12.17