PS/BaekJoon

2581 JAVA μ†Œμˆ˜

chaerlo127 2024. 2. 4. 00:47
728x90
 

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κ³Ό μžκΈ°μžμ‹ μ˜ 수
  • 1λΆ€ν„° μžμ—°μˆ˜μ˜ μ œκ³±κ·ΌκΉŒμ§€ 쀑에 μžμ—°μˆ˜μ— λ‚˜λˆ„μ–΄ 떨어진닀면 μ†Œμˆ˜κ°€ μ•„λ‹˜

ν‹€λ¦° μ½”λ“œ 1

μ†Œμˆ˜λ₯Ό ν™•μΈν•˜λŠ” μ½”λ“œμ—μ„œ 제곱근 μ „κΉŒμ§€λ§Œ 확인함.

    public static boolean checkDemical(int num){
        for(int i = 2; i < (int) Math.sqrt(num); i++){
            if(num % i == 0) return false;
        }
        return true;
    }

μœ„ μ½”λ“œμ—μ„œ μ œκ³±κ·ΌκΉŒμ§€ ν™•μΈν•˜λ„λ‘ μ½”λ“œ μˆ˜μ • ν•„μš”

i <= (int) Math.sqrt(num)

λ§žμ€ μ½”λ“œ

import java.io.*;

public class Main{
    public static void main(String[] args) throws IOException{
        // μž…λ ₯κ°’
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int m = Integer.parseInt(br.readLine());
        int n = Integer.parseInt(br.readLine());
        int sum = 0;
        int min = n;

        // 계산
        for(int i = m ; i <= n ; i ++){
            if(!checkDemical(i) || i == 1) continue;
            // λ§μ…ˆ
            sum += i;
            // μ΅œμ†Œκ°’
            min = Math.min(min, i);
        }

        // 좜λ ₯ κ°’
        if (sum == 0){
            System.out.println(-1);
        }else {
            System.out.println(sum);
            System.out.println(min);
        }
    }

    public static boolean checkDemical(int num){
        for(int i = 2; i <= (int) Math.sqrt(num); i++){
            if(num % i == 0) return false;
        }
        return true;
    }
}
728x90