๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Algorithm

[Kotlin] ๋ฐฑ์ค€ 2501 - ์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

์–ด๋–ค ์ž์—ฐ์ˆ˜ p์™€ q๊ฐ€ ์žˆ์„ ๋•Œ, ๋งŒ์ผ p๋ฅผ q๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด q๋Š” p์˜ ์•ฝ์ˆ˜์ด๋‹ค. 

6์„ ์˜ˆ๋กœ ๋“ค๋ฉด

  • 6 ÷ 1 = 6 … 0
  • 6 ÷ 2 = 3 … 0
  • 6 ÷ 3 = 2 … 0
  • 6 ÷ 4 = 1 … 2
  • 6 ÷ 5 = 1 … 1
  • 6 ÷ 6 = 1 … 0

๊ทธ๋ž˜์„œ 6์˜ ์•ฝ์ˆ˜๋Š” 1, 2, 3, 6, ์ด ๋„ค ๊ฐœ์ด๋‹ค.

๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜ N๊ณผ K๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, N์˜ ์•ฝ์ˆ˜๋“ค ์ค‘ K๋ฒˆ์งธ๋กœ ์ž‘์€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. N์€ 1 ์ด์ƒ 10,000 ์ดํ•˜์ด๋‹ค. K๋Š” 1 ์ด์ƒ N ์ดํ•˜์ด๋‹ค.

ํ’€์ด

1. ๋‚˜๋จธ์ง€๊ฐ€ 0์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด ์•ฝ์ˆ˜์ด๋‹ค.

2. N์ด 10,000์ดํ•˜์ด๋‹ค -> ๋ฌด์‹ํ•œ ๋ฐฉ๋ฒ•์ธ 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ชจ๋‘ ํ™•์ธํ•ด๋„ 1๋งŒ๋ถ„์˜ 1์ดˆ(1์–ต์— 1์ดˆ๋กœ ๊ฐ€์ •)

3. ์‹œ๊ฐ„๋ณต์žก๋„ O(N)์ด์ง€๋งŒ N์ด 1์–ต ์ดํ•˜๋กœ ์ž‘๊ธฐ์— ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•œ๋‹ค.

์ œ์ถœ ์ฝ”๋“œ

import java.util.*

fun main() = with(Scanner(System.`in`)) {
    val N = nextInt()	// ์ž…๋ ฅ๊ฐ’ ๋ฐ›๊ธฐ
    val K = nextInt()	// ์ž…๋ ฅ๊ฐ’ ๋ฐ›๊ธฐ
    var C = 0
    
    // 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฃจํ”„
    for(i in 1..N){
        // ์•ฝ์ˆ˜
		if(N%i == 0){
            C++
            // K๋ฒˆ์งธ ์•ฝ์ˆ˜
            if(C == K){
                // ์ถœ๋ ฅ
                println(i)
            }
        }
    }
    
    // ์•ฝ์ˆ˜ ํ™•์ธ ์ข…๋ฃŒ
    if(C < K) println(0)
}
728x90
๋ฐ˜์‘ํ˜•