๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1124_์–ธ๋”ํ”„๋ผ์ž„

๋ฟŒ์•ผ._. 2024. 2. 26. 16:26

Silver I

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/1124)

< ์–ธ๋”ํ”„๋ผ์ž„ >

 

๋ฌธ์ œ ํ’€์ด 

 

๋จผ์ € ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•œ๋‹ค.

 

๊ทธ ํ›„์— A์ด์ƒ B์ดํ•˜์˜ ๊ฐ’์„ ๊ฐ๊ฐ ์†Œ์ธ์ˆ˜๋ถ„ํ•ดํ•˜์—ฌ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ํŒ๋‹จํ•œ๋‹ค.

 

 

 my solution (Java)

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

public class _1124_ { // ์–ธ๋”ํ”„๋ผ์ž„

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());

		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());

		boolean arr[] = new boolean[100001];
		arr[0]=true;
		arr[1]=true;
		for (int i = 2; i < 50001; i++) {
			if (!arr[i]) {
				for (int j = i + i; j < 100001; j += i) {
					arr[j] = true;
				}
			}
		}

		int result = 0;
		for (int i = a; i <= b; i++) {
			int num = i;
			int cnt = 0;
			int idx = 2;
			while (idx <= num) {
				if (num % idx == 0) {
					num /= idx;
					cnt += 1;
				} else {
					idx++;
				}
			}
			if (!arr[cnt]) {
				result += 1;
			}
		}
		System.out.println(result);
	}
}
๋ณ€์ˆ˜)
a, b : ๋‘ ์ •์ˆ˜
arr : ์†Œ์ˆ˜
result : ์–ธ๋”ํ”„๋ผ์ž„ ๊ฐœ์ˆ˜
num : ์ž์—ฐ์ˆ˜ X
cnt : ์ž์—ฐ์ˆ˜ X ์†Œ์ธ์ˆ˜๋ถ„ํ•ดํ•ด์„œ ๊ตฌํ•œ ์†Œ์ˆ˜์˜ ๋ชฉ๋ก์˜ ๊ธธ์ด

 

๋‘ ์ •์ˆ˜ A์™€ B๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. 

๋จผ์ € ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌํ•ด๋‘”๋‹ค. 

๊ทธ๋‹ค์Œ A์ด์ƒ B์ดํ•˜์˜ ๊ฐ’์„ ๊ฐ๊ฐ ์†Œ์ธ์ˆ˜๋ถ„ํ•ดํ•˜์—ฌ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ๊ทธ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ํŒ๋‹จํ•œ๋‹ค.