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

Kotlin 🍬 λ°±μ€€ 8단계 :: 2292 번

λ²ŒκΏ€μ˜€μ†Œλ¦¬πŸ¦‘ 2023. 5. 11. 23:03
λ°˜μ‘ν˜•

λ²Œμ§‘

문제   |

  μœ„μ˜ κ·Έλ¦Όκ³Ό 같이 μœ‘κ°ν˜•μœΌλ‘œ 이루어진 λ²Œμ§‘μ΄ μžˆλ‹€. κ·Έλ¦Όμ—μ„œ λ³΄λŠ” 바와 같이 μ€‘μ•™μ˜ λ°© 1λΆ€ν„° μ‹œμž‘ν•΄μ„œ μ΄μ›ƒν•˜λŠ” 방에 λŒμ•„κ°€λ©΄μ„œ 1μ”© μ¦κ°€ν•˜λŠ” 번호λ₯Ό μ£Όμ†Œλ‘œ 맀길 수 μžˆλ‹€. 숫자 N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, λ²Œμ§‘μ˜ 쀑앙 1μ—μ„œ N번 λ°©κΉŒμ§€ μ΅œμ†Œ 개수의 방을 μ§€λ‚˜μ„œ 갈 λ•Œ λͺ‡ 개의 방을 μ§€λ‚˜κ°€λŠ”μ§€(μ‹œμž‘κ³Ό 끝을 ν¬ν•¨ν•˜μ—¬)λ₯Ό κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 예λ₯Ό λ“€λ©΄, 13κΉŒμ§€λŠ” 3개, 58κΉŒμ§€λŠ” 5개λ₯Ό μ§€λ‚œλ‹€.

 

μž…λ ₯   |

  첫째 쀄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진닀.

 

좜λ ₯   |

  μž…λ ₯으둜 주어진 λ°©κΉŒμ§€ μ΅œμ†Œ 개수의 방을 μ§€λ‚˜μ„œ 갈 λ•Œ λͺ‡ 개의 방을 μ§€λ‚˜λŠ”μ§€ 좜λ ₯ν•œλ‹€.

 

 

풀이  |

  λ²Œμ§‘μ€ 1 -(+6)→ 7 -(+12)→ 19 -(+18)→ 37 - ... 이와 같이 6의 λ°°μˆ˜μ”© μ¦κ°€ν•œλ‹€.

  μž…λ ₯받은 값이 μ–΄λŠ ν•œ 라인에 μ‘΄μž¬ν•˜λŠ” 숫자의 μ΅œλŒ“κ°’λ³΄λ‹€ μž‘μœΌλ©΄ κ·Έ 라인만큼의 방을 μ§€λ‚˜μ˜¨ 것을 μ•Œ 수 μžˆλ‹€.

 

 

λ‹΅μ•ˆ  |

fun main() {
    val N = readLine()!!.toInt()
    var rooms = 1
    var result = 1
    
    if (N == 1) {
        print(result)
    } else {
        while (rooms < N) {
            rooms += result * 6
            result++
        }
        print(result)
    }
}
λ°˜μ‘ν˜•