어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.( 1 ≤ n ≤ 1,000,000)
function solution(n) {
var answer = 0;
var sqrt = Math.sqrt(n);
if(Number.isInteger(sqrt)){
answer = 1
}else{
answer = 2
}
return answer;
}
제곱근 그러니까 루트(√ )를 씌워주는 Math.sqrt() 메소드를 활용하였다
그리고 Number.isInteger() 정수인지 판별해주는 메소드를 사용하여 if문으로 처리했는데
당연히 if문은 삼항연산자로 변환이 가능하고 지금의 경우엔 선택지가 두 개니까
삼항연산자를 사용하는게 좋아보인다
const solution = n => Math.sqrt(n)%1 ? 2 : 1;
그런데 Number.isInteger() 메소드 대신 나머지 연산자를 통해 1로 나눈 나머지가 0이면 정수인 것을 활용해도 된다
이처럼 오히려 메소드를 사용하지 않아도 짧은 코드가 나올 수 있다
그리고 경우의 수가 두 개라면 꼭 삼항연산자를 고려해보자
'오늘 뭐했냐 > 기억하면 좋을 문제들' 카테고리의 다른 글
| 문자 반복 출력 - .map(), .repeat() (0) | 2023.05.27 |
|---|---|
| 문자열 뒤집기 - 스프레드 문법, .reverse(), .join() (0) | 2023.05.27 |
| 옷가게 할인 받기(총 구매 가격에 따른 할인률 적용가) (0) | 2023.05.26 |
| 아이스 아메리카노(구매 가능 수와 잔돈 계산) (0) | 2023.05.26 |
| 사분면 위치 구하기 (구조분해할당) (0) | 2023.05.26 |