๊ธฐ๋ก๋ฐฉ

BOJ_4948 : ๋ฒ ๋ฅดํŠธ๋ž‘ ๊ณต์ค€ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_4948 : ๋ฒ ๋ฅดํŠธ๋ž‘ ๊ณต์ค€

Soom_1n 2023. 1. 12. 17:58

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

4948๋ฒˆ: ๋ฒ ๋ฅดํŠธ๋ž‘ ๊ณต์ค€

๋ฒ ๋ฅดํŠธ๋ž‘ ๊ณต์ค€์€ ์ž„์˜์˜ ์ž์—ฐ์ˆ˜ n์— ๋Œ€ํ•˜์—ฌ, n๋ณด๋‹ค ํฌ๊ณ , 2n๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์†Œ์ˆ˜๋Š” ์ ์–ด๋„ ํ•˜๋‚˜ ์กด์žฌํ•œ๋‹ค๋Š” ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋‹ค. ์ด ๋ช…์ œ๋Š” ์กฐ์ œํ”„ ๋ฒ ๋ฅดํŠธ๋ž‘์ด 1845๋…„์— ์ถ”์ธกํ–ˆ๊ณ , ํŒŒํ”„๋ˆ„ํ‹ฐ ์ฒด๋น„์‡ผ

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ž…๋ ฅ ๋œ ์ˆ˜ n๋ณด๋‹ค ํฌ๊ณ  2n์ดํ•˜์ธ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • 0์ด ์ž…๋ ฅ ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.util.Scanner;

public class Main {
	private static Scanner sc;

	public static void main(String[] args) {
		sc = new Scanner(System.in);
		int n = sc.nextInt();

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

			int answer = 0;
			for (int i = n + 1; i <= n * 2; i++) {
				if (!arr[i]) {
					answer++;
				}
			}
			System.out.println(answer);

			n = sc.nextInt();
		}
	}
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • 2๋ถ€ํ„ฐ 2n๊นŒ์ง€์˜ ์†Œ์ˆ˜๋ฅผ boolean๋ฐฐ์—ด arr์— ์ฑ„์šด๋‹ค.
    • 2๋ถ€ํ„ฐ 2*n๊นŒ์ง€ ์ˆ˜๋ฅผ ์ฆ๊ฐ€ํ•ด ๊ฐ€๋ฉฐ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•œ๋‹ค.
      • ํ•œ ์ˆ˜๋ฅผ 2๋ถ€ํ„ฐ ๊ฐ’์ด n*2๋ฅผ ๋„˜์ง€ ์•Š์„ ๋•Œ ๊นŒ์ง€ ํ‚ค์›Œ๊ฐ€๋ฉฐ arr๊ฐ’์„ true๋กœ ๋ฐ”๊พผ๋‹ค.
    • ์‹œ์ž‘ ์ˆ˜๊ฐ€ ์ด๋ฏธ true์ผ ๋•Œ๋Š” ๋ฐ˜๋ณต์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • arr๋ฅผ ์ˆœํšŒํ•ด false์˜ ์ˆ˜๋ฅผ ์„ธ์„œ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์†Œ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•ด ๊ณ„์‚ฐ ์†๋„๋ฅผ ์˜ฌ๋ฆฌ๋Š” ์•„์ด๋””์–ด๋ฅผ ์•Œ๊ณ ์žˆ์–ด์„œ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

728x90