[프로그래머스] 정수 제곱근 판별 - Javascript
문제
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
n | return |
---|---|
121 | 144 |
3 | -1 |
풀이
정수 n이 제곱이면 n의 제곱근+1
의 제곱을 반환한다.
만약 제곱이 아니라면 -1을 반환한다.
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 반환한다.
제곱에 관련된 메서드를 활용해보자.
- 정수 n의 제곱근을 구하고 제곱근일 경우, 제곱근이 아닐 경우를 조건으로 한다. 이 때 구분하는 조건은 나머지(%)를 사용한다.
- 제곱근일 경우, 제곱근에 +1을 한 제곱을 출력하고
- 제곱근이 아닐 경우, -1을 출력한다.
function solution(n) {
var answer = 0;
let sqrt = Math.sqrt(n);
if (sqrt % 1 !== 0) { // 나머지를 이용해 소숫점 판별, 제곱근이 아닐 경우
answer = -1;
} else {
answer = Math.pow(sqrt+1,2); // 제곱근일 경우
}
return answer
}
메서드를 활용하면 간단한 if문으로 해결할 수 있는 문제다.
가독성을 높이기 위해 삼항연산자를 사용해 풀어보았다.
function solution(n) {
// 삼항 연산자를 이용한 풀이
return Math.sqrt(n) % 1 == 0 ? Math.pow(Math.sqrt(n)+1,2) : -1
}
삼항연산자를 사용하면 코드가 눈에 띄게 줄어들어 깔끔하게 보여지는 것을 확인할 수 있다.
Takeaway
무조건 코드를 간결하게 쓴다고 좋은 코드일 순 없다라고 한다. 나는 코드를 무조건 짧고 간결하게 적기 보단 누구나 이해하기 쉬운 가독성이며, 의도가 명확하고, 성능적으로 좋아야 좋은 코드라고 생각한다. 앞으로도 좋은 코드에 대해 깊이 고민하기 위해 여러가지의 코드를 보면서 공부하자!
알고리즘은 정해진 답이 없다!
Author And Source
이 문제에 관하여([프로그래머스] 정수 제곱근 판별 - Javascript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pmk4236/프로그래머스-정수-제곱근-판별-Javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)