๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/62048?language=kotlin
์์
https://school.programmers.co.kr/learn/courses/30/lessons/62048?language=kotlin
ํ์ด
ํด๋น ๋ฌธ์ ๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ ๋ค์์ x์ถ์ผ๋ก ์ขํ๊ฐ ํ๋์ฉ ์ฆ๊ฐํ ๋์ ๋์ด ์ฐจ์ด๊ฐ ์ฌ์ฉํ ์ ์๋ ์ฌ๊ฐํ์ ๊ฐฏ์์
๋๋ค.
answer๋ ์ ์ฒด ์ฌ๊ฐํ์ ๊ฐฏ์์ด๊ณ 1๋ถํฐ w๊น์ง ์ขํ๋ฅผ ํ๋์ฉ ์ฆ๊ฐํ๋ฉด์ x์ขํ์ ํด๋นํ๋ y์ขํ์ ์ฌ๋ฆผ ๊ฐ์ ๊ตฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ x์ขํ๋ณด๋ค 1์์ ์ขํ์ ํด๋นํ๋ y์ขํ์ ๋ด๋ฆผ ๊ฐ์ ๊ตฌํ ํ ์ฐจ์ด๋ฅผ ๊ตฌํ๋ฉด ๋ฉ๋๋ค.
์ฒ์์๋ ์๋ ์ฝ๋์ฒ๋ผ d ๋ผ๋ ๋ณ์์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ ํ x์ขํ๋ฅผ ๊ณฑํ๋ ์์ผ๋ก ํ์์ง๋ง, ๋ถ๋์์์ ์ ์ค์ฐจ๋ก ์ธํด ํ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํฉ๋๋ค. ์ด๋ฅผ ๋๋นํ์ฌ ๊ธฐ์ธ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌํด๋๋ ๊ฒ์ด ์๋ h*x์ขํ / w ๋ก ๋ณ๊ฒฝํ์๋ฉด ๋ฉ๋๋ค.
๋จผ์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ณ์ฐ์ ํ๊ฒ ๋ ๋ ๋๋์
์ฐ์ฐ์ผ๋ก ๋ฌด์ํ ๋งํผ์ ์ค์ฐจ๊ฐ ์๊ธฐ๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ์ด ์ค์ฐจ์ x์ขํ๋ฅผ ๊ณฑํ๊ฒ ๋์์ ๊ฒฝ์ฐ ์ค์ฐจ ๋ํ x์ขํ ํฌ๊ธฐ๋งํผ ๊ณฑํด์ง๊ฒ ๋๊ณ ๋ฌด์ํ ์ ์๋ ์ ๋์ ์ค์ฐจ๊ฐ ์๋๊ฒ ๋์ด ์ํ๋ ๊ฐ์ด ์๋์ค๋ ํ์ ์ด ๋ํ๋๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๋จผ์ ๊ตฌํ์ง ์๊ณ ๊ณฑํ๊ธฐ ์ฐ์ฐ(์ ์ x ์ ์) ์ ํ ํ ๋๋์
์ ํ๊ฒ ๋๋ฉด 1๋ฒ์ ๋ฏธ๋ฏธํ ์ค์ฐจ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ ๋ต์ด ๋ฉ๋๋ค.
import kotlin.math.*
class Solution {
fun solution(w: Int, h: Int): Long {
var answer: Long = w*h.toLong()
val d = h.toDouble()/w
(1..w).forEach{
answer-= (ceil(h.toDouble()*it/w).toLong() - floor(h.toDouble()*(it-1)/w).toLong())
}
return answer
}
}
์ฐธ๊ณ
ceil - Kotlin Programming Language
kotlinlang.org
floor - Kotlin Programming Language
kotlinlang.org