Q. 어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
ex) 입출력 예시
| n | result |
| 1234 | 10 |
| 930211 | 16 |
Thinking Process
일단 정수 n의 약수들을 알아야 하니까 for 구문을 돌면서 약수들을 구하고 그 중에서 제곱을 해서 정수 n 이 되는 값이 있으면 빈 배열에 넣고 이 배열의 길이 값이 0이면 2 아니면 1을 출력하면 되겠다 !
Code
function solution(n) {
let arr = [];
for (let i = 1; i < n; i++) {
if (n % i === 0 && i * i === n) {
arr.push(i);
}
}
if (arr.length > 0) {
return 1;
} else {
return 2;
}
}
Another Code
function solution(n) {
return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}
레전드 물론 내 풀이도 맞지만 다른 사람의 풀이를 보니까 저렇게 간단하게 풀 수 있었다.
코드 해석을 하자면 n의 제곱근을 구하고 이 값이 integer면 1을 출력하도록 한다.
만일 n이 144면 12로 딱 떨어져 1이 출력되고, n이 976이면 31.xxxxx float 형태로 나오니 2가 출력될 것이다.
'Algorithm Solution > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 주사위의 개수 (0) | 2023.01.25 |
|---|---|
| [프로그래머스] 가위 바위 보 (0) | 2023.01.24 |
| [프로그래머스] 암호해독 (0) | 2023.01.24 |
| [프로그래머스] 세균 증식 (0) | 2023.01.24 |
| [프로그래머스] 자릿수 더하기 (1) | 2023.01.19 |
