SW Test/Programmers
[Programmers] Lv2.k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ(kotlin)
An effort will never betray ๐
2022. 10. 12. 17:57
๋ฐ์ํ
๋ฌธ์
์์
ํ์ด
- ์์ ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ง ๋ง์ด ์์ผ๋ ์๋ตํ๊ฒ ์ต๋๋ค.
- ํด๋น ๋ฌธ์ ์์๋ k์ง์๋ก ๋ณ๊ฒฝ ์์ Int์ ํฌ๊ธฐ ์๋ฆฌ์๋ณด๋ค๋ ์ปค์ง๊ธฐ ๋๋ฌธ์ ์์ ํ๋ณํจ์์์๋ Long์ผ๋ก ์ ์ธํด์ผ ํฉ๋๋ค.
- StringBuilder์ ํ๋์ฉ ๋๋ ์ ์ถ๊ฐํ์ง๋ง, toString(k) ๋ผ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ๊ตฌํ ์ ์๋ค๊ณ ํฉ๋๋ค. ๐ ์ญ์ ๋ ๋ค์ ํ๋ฒ ํจ์๋ฅผ ๋ง์ด ์์์ผ ๋ชธ์ด ๊ณ ์ํ์ง ์๋๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ฒ ๋๋ค์ .
import kotlin.math.*
class Solution {
fun isPrime(n: Long): Boolean{
if(n == 1L) return false
(2..sqrt(n.toDouble()).toLong()).forEach{
if(n%it == 0L) return false
}
return true
}
fun solution(n: Int, k: Int): Int {
var answer: Int = -1
val str = StringBuilder().apply{
var num = n
while(num>0){
append(num%k)
num/=k
}
reverse()
}
return str.split("0").filter{it.isNotEmpty()}.filter{isPrime(it.toLong())}.size
}
}
์ฐธ๊ณ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ kotlin์ ํน์ฑ์ ๋ง๊ฒ ํจ์๋ฅผ ๋ง์ด ์ตํ์ ๐ฝ
- ์ฐธ๊ณ ๋ก String์๋ reversed() ๋ฉ์๋์ด๊ณ StringBuilder๋ reverse() ์ ๋๋ค~
๋ฐ์ํ