728x90
N, K를 받음
2<= X <= N 의 X값을 ArrayList에 넣음
2부터 소수판별 에라토스체로 걸러냄
걸러낼 때마다 K_count 증가시키고 K와 일치하는지 비교
일치할 때 까지 체로 계속 걸러내기
일치할 경우 break후 res값 출력
**Integer형 ArrayList remove를 할 때
성분값에 (Integer)를 붙여줘야 성분값으로 인식한다.
ex)
ArrayList.remove(3) -> 3번째 index 성분 제거
ArrayList.remove((Integer)3) -> 값이 정수값 3인 성분 제거
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner (System.in); int N = sc.nextInt(); int K = sc.nextInt(); int K_count=0; int res=0; ArrayList<Integer> num = new ArrayList<Integer>(); for(int i=2;i<=N;i++) { num.add(i); } for(int i=2;i<=N;i++) { if(num.contains(i)) { int count=0; boolean sosu=false; int j=0,unit=0; for(j=2; j<=i; j++) { if(i%j==0) count++; if(count==1) { if(j!=i) break; else { sosu=true; unit = j; // System.out.println("sosu"+j); break; } } } // System.out.println(j); if(sosu) { while(true) { if(num.contains(j)) { num.remove((Integer)j); K_count++; } if(K_count==K) { res=j; break; } j+=unit; if(j>N) break; } } } if(res!=0) break; } System.out.println(res); } } |
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준][Java] 5585번 거스름돈 (0) | 2018.05.16 |
---|---|
[백준][Java] 1764번 듣보잡 (0) | 2018.05.16 |
[백준][Java] 1789번 수들의 합 (0) | 2018.05.16 |
[백준][Java] 10798번 세로읽기 (0) | 2018.05.16 |
[백준][Java] 3053번 택시 기하학 (0) | 2018.05.10 |