์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/BOJ_Java

[BOJ/Step9] 2581 : ์†Œ์ˆ˜ (JAVA)

NaNaRin๐Ÿ™ƒ 2021. 1. 19. 15:25

www.acmicpc.net/problem/2581

 

2581๋ฒˆ: ์†Œ์ˆ˜

M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ์ฐพ์•„ ์ฒซ์งธ ์ค„์— ๊ทธ ํ•ฉ์„, ๋‘˜์งธ ์ค„์— ๊ทธ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.  ๋‹จ, M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋Š” ์ฒซ์งธ ์ค„์— -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net


๋ฌธ์ œ

์ž์—ฐ์ˆ˜ M๊ณผ N์ด ์ฃผ์–ด์งˆ ๋•Œ M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ๊ณจ๋ผ ์ด๋“ค ์†Œ์ˆ˜์˜ ํ•ฉ๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์˜ˆ๋ฅผ ๋“ค์–ด M=60, N=100์ธ ๊ฒฝ์šฐ 60์ด์ƒ 100์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๋Š” 61, 67, 71, 73, 79, 83, 89, 97 ์ด 8๊ฐœ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋“ค ์†Œ์ˆ˜์˜ ํ•ฉ์€ 620์ด๊ณ , ์ตœ์†Ÿ๊ฐ’์€ 61์ด ๋œ๋‹ค.

 

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์— M์ด, ๋‘˜์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค.

M๊ณผ N์€ 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฉฐ, M์€ N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

 

์ถœ๋ ฅ

M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ์ฐพ์•„ ์ฒซ์งธ ์ค„์— ๊ทธ ํ•ฉ์„, ๋‘˜์งธ ์ค„์— ๊ทธ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. 

๋‹จ, M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋Š” ์ฒซ์งธ ์ค„์— -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1

60

100

 

์˜ˆ์ œ ์ถœ๋ ฅ 1

620

61

 

์˜ˆ์ œ ์ž…๋ ฅ 2

64

65

 

์˜ˆ์ œ ์ถœ๋ ฅ 2

-1


ํ’€์ด

1. M๊ณผ N์ด 10000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฏ€๋กœ 1~10000 ์‚ฌ์ด์˜ ์†Œ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐฐ์—ด์— ๋„ฃ์–ด๋‘”๋‹ค.

   1-1. ์†Œ์ˆ˜๋Š” 1๊ณผ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ๋งŒ ๋‚˜๋ˆ ์ง€๋Š” ์ˆ˜์ด๋ฏ€๋กœ, 2, 3, 5, …… ์ˆœ์ด๋‹ค.

   1-2. 2์™€ 3๋ถ€ํ„ฐ ๋ฐฐ์—ด prime[] ์— ๋„ฃ์–ด๋‘๊ณ 

   1-3. 4~10000 ์˜ ์ˆ˜๊ฐ€ ํ•ด๋‹น prime์˜ ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ๋‚˜๋ˆ„์–ด์ง€์ง€ ์•Š๋Š” ์ˆ˜๋งŒ prime์— ์ถ”๊ฐ€ํ•œ๋‹ค.

2. ์ตœ์†Ÿ๊ฐ’์„ ์ €์žฅํ•  min๊ณผ ์ด ํ•ฉ์„ ์ €์žฅํ•  total์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

3. ์ฃผ์–ด์ง€๋Š” m๊ณผ n ์‚ฌ์ด์˜ ์ˆ˜๊ฐ€ prime์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์กด์žฌํ•  ๊ฒฝ์šฐ min์ด 0์ผ ๋•Œ๋งŒ ํ•ด๋‹น ์ˆ˜๋ฅผ min์— ์ €์žฅํ•˜๊ณ  total์— ๋”ํ•œ๋‹ค. ( ์ตœ์†Ÿ๊ฐ’์„ ์ €์žฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— min์— ์ด๋ฏธ ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ์—” ์ตœ์†Ÿ๊ฐ’์ด ์•„๋‹˜ )

4. min์ด 0 ์ด๋ฉด m๊ณผ n ์‚ฌ์ด์— ์†Œ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ -1์„, ๊ทธ ์ด์™ธ์—” total๊ณผ min์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

import java.util.Scanner;

public class B2581 {

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

		int prime[] = new int[1300];
		int primeIdx = 1;
		prime[0] = 2;
		prime[1] = 3;
		
		Loop1 :
		for(int i = 4; i <= 10000; i++) {
			for(int j = 0; j < primeIdx; j++) {
				if(i % prime[j] == 0) {
					continue Loop1;
				} else {
					
				}
			}
			prime[++primeIdx] = i;
		}
		
		int m = sc.nextInt();
		int n = sc.nextInt();
		int min = 0;
		int total = 0;
		
		for(int i = m; i <= n; i++) {
			for(int j = 0; j <= primeIdx; j++) {
				if(prime[j] == i) {
					min = min == 0 ? prime[j] : min;
					total += prime[j];
				}
			}
		}
		
		if(min == 0) {
			System.out.println("-1");
		} else {
			System.out.println(total);
			System.out.println(min);
		}
	}
}