πŸ“– Algorithm/πŸ“ λ°±μ€€

Kotlin 🍬 λ°±μ€€ 9단계 :: 2581 번

λ²ŒκΏ€μ˜€μ†Œλ¦¬πŸ¦‘ 2023. 5. 19. 04:00
λ°˜μ‘ν˜•

μ†Œμˆ˜

문제   |

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

 

 

풀이  |

  Mκ³Ό N을 μž…λ ₯λ°›μ•„ M 이상 N μ΄ν•˜μ˜ μžμ—°μˆ˜ 쀑 μ†Œμˆ˜μΈ κ²ƒμ˜ ν•©κ³Ό κ·Έ μ΅œμ†Ÿκ°’μ„ κ΅¬ν•œλ‹€.

 

 

λ‹΅μ•ˆ  |

import java.util.Scanner

fun main() = with(Scanner(System.`in`)) {
    val M = nextInt()
    val N = nextInt()
    var result = 0
    var minimum = 0
    
    for (i in N downTo M) {
        if (isPrime(i)) {
            result += i
            minimum = i
        }
    }
    
    if (result == 0) {
        print(-1)
    } else {
        print("$result\n$minimum")
    }
}

fun isPrime(num: Int): Boolean {
    if (num == 1) return false
    
    for (j in 2..num - 1) {
        if (num % j == 0) return false
    }
    
    return true
}
λ°˜μ‘ν˜•