프로그래머스
[1단계] 정수 제곱근 판별
chsua
2022. 11. 16. 15:04
문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
내 성공답안: 제곱근 이용해서 구해보기
function solution(n) {
return (n**(1/2))%1==0?((n**(1/2))+1)**2:-1 ;
}
내 실패답안: 일부 성공하기는 했으나 시간초과가 되어 실패
function solution(n) {
let divN = [] ;
for (let i = 1; i <= n ; i++){
(n%i==0)?divN.push(i):n ;
}
let lenDivN = divN.length ;
return (lenDivN%2==0)?-1: ((divN[Math.floor(lenDivN/2)])+1)**2 ;
}
> 약수 배열을 만들어 중앙값을 구하는 방식으로 했는데, 이 과정에서 n이 커지면 감당할 수 없어지는 것 같음
조언:
n**(½)는 변수로 만드는게 좋음
변수의 수가 느는것은 필요하다면 상관없음
중복되는 것, 쓸데없는것을 줄여서 가독성을 높이는 것이 중요
코테에서 **(½)쓰지 말라고 하면 다른 방법 찾아야함