SW Test/Programmers
[Programmers] Lv2. ๋ฉ์ฉกํ ์ฌ๊ฐํ(kotlin)
An effort will never betray ๐
2022. 8. 1. 01:50
๋ฐ์ํ
๋ฌธ์
์์
ํ์ด
- ํด๋น ๋ฌธ์ ๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ ๋ค์์ 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
}
}
์ฐธ๊ณ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ kotlin์ ํน์ฑ์ ๋ง๊ฒ ํจ์๋ฅผ ๋ง์ด ์ตํ์ ๐ฝ
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.math/ceil.html
๋ฐ์ํ