✨ Algorithm

[λ°±μ€€/C++] 2581번 : μ†Œμˆ˜

nitronium102 2021. 8. 6. 22:08

문제

μžμ—°μˆ˜ 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을 좜λ ₯ν•œλ‹€.

풀이

μ§€λ‚œ μ†Œμˆ˜ λ¬Έμ œμ™€ λΉ„μŠ·ν•œ λ¬Έμ œλ‹€! 

#include <iostream>
#include <cmath>
using namespace std;

int main(){
    int M, N, sum=0, min=10000;
    bool isPrime = true;
    cin >> M >> N;

    for (int i=M; i<=N; i++){
      // 1인 경우
      if (i==1){
        isPrime = false;
      }
      else{
        for (int j=2; j<=sqrt(i); j++){
          if (i%j==0){
            isPrime = false;
            break;
          }
        }
      }
      // μ†Œμˆ˜μΈ 경우
      if (isPrime == true){
        if (min > i){
          min = i;
        }
        sum += i;
      }
      isPrime = true;
    }
  
    if (sum == 0)
      cout << -1 << endl;
    else{
      cout << sum << endl;
      cout << min << endl;
    }
}

iλ₯Ό μ“Έ μžλ¦¬μ— 자꾸 M을 λ„£μ–΄μ„œ μ•ˆ λŒμ•„κ°”λ˜ 문제. λ³€μˆ˜ μ‚¬μš©μ— μ£Όμ˜ν•˜μž