#12934
๐ Question ?
https://school.programmers.co.kr/learn/courses/30/lessons/12934
class Solution {
fun solution(n: Long): Long {
var answer: Long = 0
return answer
}
}
๐งฉ Thought Process
- n์ ์ ๊ณฑ๊ทผ์ ์ฐพ์์ฃผ๊ธฐ
- ๊ทธ ์ ๊ณฑ๊ทผ์ integer๋ก ๋ฐ๊พธ๊ธฐ
์๋ ๋งํฌ๋ ์์ซ์ ์ ์์ ๊ฑฐ๋ ๋ฐ์ฌ๋ฆผ ๋ฐ๋ด๋ฆผ ํ ์ ์๋ ํจ์์ ๋ํ ์ค๋ช ์ด ์๋ค.
์์ฝ:
parse: "2.5".toDouble()
discard decimal: 2.5.toInt()
round to neareset: 2.5.roundToInt()
round to higher: ceil(2.5).toInt()
round to lower: floor(2.5).toInt()
https://stackoverflow.com/questions/68761149/how-can-i-convert-a-decimal-string-value-to-int-in-java - n๋ long์์ integer๋ก ๋ฐ๊พธ๊ธฐ
- integer๋ก ๋ฐ๊พผ ์ ๊ณฑ๊ทผ(x)์ ๋ค์ ์ ๊ณฑํด์ฃผ๊ธฐ
- x์ ์ ๊ณฑ๊ณผ n์ด ๊ฐ์ผ๋ฉด x+1 ์ถ๋ ฅ
- ๊ฐ์ง ์์ผ๋ฉด -1 ์ถ๋ ฅ (if ๋ฌธ ์ฌ์ฉ)
// 1์ฐจ ์๋ (ํ
์คํธ 18๊ฐ์ค 15๊ฐ ํต๊ณผ :(
import kotlin.math.sqrt //๋ฃจํธ ์ฌ์ฉํ ๋ ์ํฌํธ ํด์ผํจ
import kotlin.math.pow //์ ๊ณฑ ์ฌ์ฉํ ๋๋ ์ํฌํธ ํด์ผํจ
class Solution {
fun solution(n: Long): Long { //์
๋ ฅ๋๋ ๋ณ์ n์ Longํ์ด๊ณ ์ถ๋ ฅ ๋๋ ๊ฐ๋ Longํ์ด์ด์ผํจ
var answer: Long = 0
var x = sqrt(n.toDouble()) // n์ด Doubleํ์ด์ฌ์ผ๋ง ๋ฃจํธ๋ฅผ ํ ์ ์์
if(x.pow(2) == n.toDouble()) {
answer = (x+1).pow(2).toLong()
} else {
answer = -1
}
return answer
}
}
๐ Answer
์๋ฌด๋ฆฌ ๋ด๋ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ค.
import kotlin.math.sqrt
import kotlin.math.pow
class Solution {
fun solution(n: Long): Long {
var answer: Long = 0
val x = sqrt(n.toDouble()).toLong()
return if (x * x == n) (x+1)*(x+1) else -1
}
}
์ถฉ๊ฒฉ... ๋๋ฐ.. ์ด๋ ๊ฒ ์ฝ๊ฒ ํ๋ฆฌ๋ ๊ฑฐ์๋ค๊ณ ??
๋ฆฌํด ๋ค์ ์ดํ ๋ฌธ ๋ฃ๋๊ฒ ๋ ์ ์ ํ๋น.. ๊ทธ๋ฆฌ๊ณ ์ ๊ณฑ์ ํ ๋ ๋๋ ๋ฌด์กฐ๊ฑด .pow()๋ฅผ ์ฌ์ฉํ ์๊ฐ๋ง ํ๋๋ฐ ๊ณฑํ ์๋ ์๊ตฌ๋ ์ถ์๋ค.
๋ ๋ค๋ฅธ ํ์ด:
import kotlin.math.sqrt
import kotlin.math.pow
class Solution {
fun solution(n: Long): Long {
var answer: Long = 0
val x = sqrt(n.toDouble())
return if(x % 1.0 == 0.0) {
(x + 1).pow(2.0).toLong()
} else {
-1L
}
}
}
์ง์ฌ ์ฒ์ฐ๊ฐ?? ๋ฃจํธ๋ฅผ ์์ด ๊ฐ์ 1.0์ผ๋ก ๋๋์ด์ ์์ซ์ ์๋ฆฌ์ ๋๋จธ์ง๊ฐ ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค. else ๋ค์ ์ถ๋ ฅํ ๋ -1L๋ง ์ฐ๋ ๊ฒ๋ ์ข ๋ฉ์ง๋ค.
๐ Result
์ค์ ๋๋ถ์ ํต๊ณผ
๐ Comment
๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ์ฐ์ ์ด๋ป๊ฒ ํ๊ณ ๋ฐ์ฌ๋ฆผ ๋ฐ๋ด๋ฆผ ๋ฑ์ ๋ฌธ๋ฒ์ ์๊ฒ ๋์๋ค. sqrt, pow์ ๊ฐ์ ์ฐ์ฐ์ ํ ๋๋ ๊ทธ ์์ ๋ค์ด๊ฐ๋ ์์ ์๋ฃํ์ด Double์์ ํ์ธํด์ผ ํ๋ค. ๋ค๋ฅธ ์ฌ๋๋ค ํ์ด๋ฅผ ๋ง์ด ๋ด์ผ ๊ฒ ๋ค. ์ฒดํ ์์ผฐ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋์์ด ๋ง์ด ๋๋ ๊ฒ ๊ฐ๋ค.