응애개발자
article thumbnail
728x90

문제

https://www.acmicpc.net/problem/6219

 

접근 방법

  1. 소수를 먼저 B범위 만큼 구해주고, 소수 안에서 D가 포함되어있는지 찾으면 되는 문제이다.

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    private static StringBuilder sb;
    private static BufferedReader br;
    private static StringTokenizer st;
    private static int A,B;
    private static String D;
    private static boolean[]isPrime;
    private static int count = 0;

    public static void primeCheck(){
        Arrays.fill(isPrime,true);

        isPrime[0] = false;
        isPrime[1] = false;

        for(long i = 2; i < B+1 ; i++){
            if(!isPrime[(int)i]) continue;

            for(long j = i*i ; j < B+1  ; j+=i){

                isPrime[(int)j] = false;
            }
        }
    }

    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        st = new StringTokenizer(br.readLine());
        A = Integer.parseInt(st.nextToken());
        B = Integer.parseInt(st.nextToken());
        D = st.nextToken();

        isPrime = new boolean[B+1];

        primeCheck();
    }

    //실행
    public static void process() {
        for(int i = A ; i <= B; i++){
            if(isPrime[i] && String.valueOf(i).contains(D)){
                count++;
            }
        }


        System.out.println(count);
    }


    public static void main(String[] args) throws Exception {
        input();
        process();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!