1. 문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
2. 제한 조건
n은 1이상, 50000000000000 이하인 양의 정수입니다.
3. 예시
입력/출력
4. 풀이
[Math.sqrt / Math.pow 활용]
- 만약에 n의 제곱근을 1로 나눈 나머지가 0이라면 => 정수라면
- n의 제곱근에 1을 더한 값의 제곱값을 저장
- 그게 아니라면 -1을 저장
//Math에 두가지 메쏘드가 있는걸 알고있어서 검색해서 풀기!
function solution(n) {
var answer = 0;
if (Math.sqrt(n) % 1 === 0) {
answer = Math.pow((Math.sqrt(n) + 1),2)
} else {
answer = -1
}
return answer;
}
[while / if]
근본의 while만 쓴 사람의 풀이
function nextSqaure(n){
var result = 0;
var x = 0;
while (x*x < n){
x++;
}
if (x*x == n){
x++;
result = x*x;
}else{
result = 'no';
}
return result;
}
'개발 공부 > 알고리즘' 카테고리의 다른 글
[항해 99 알고리즘 테스트] "1번. 전화번호 양식" JavaScript / .slice() (0) | 2022.03.17 |
---|---|
[프로그래머스 알고리즘] "콜라츠 추측" JavaScript / while, for (0) | 2022.03.16 |
[프로그래머스 알고리즘] "하샤드 수" JavaScript / toString, split, reduce (0) | 2022.03.16 |
[프로그래머스 알고리즘] "제일 작은 수 제거하기" JavaScript /Math.min(), ES6/ES2015, ES6/ES2016, .splice(), indexOf() (0) | 2022.03.16 |
[항해 99 모의고사 알고리즘] "신대륙 발견" JavaScript / .new Date(), for, while (0) | 2022.03.15 |