코더 장군
강아지코더
코더 장군
전체 방문자
오늘
어제
  • 분류 전체보기 (67)
    • 프론트엔드 (24)
      • react (9)
      • html5 * css3 (1)
      • Javascript (10)
    • 개발일기 (36)
      • 알고리즘 (27)
      • 블록체인 (3)
      • mongoDB (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • 일기#심리상담
  • 비공개#일기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
코더 장군

강아지코더

개발일기/알고리즘

정수 제곱근 판별

2021. 11. 10. 22:22

문제 설명

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한 사항

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

입출력 예 설명

입출력 예#1121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.

입출력 예#23은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

 

function solution(ans) {
		//1. 특정숫자의 거듭제곱 값을 계산해주는 메소드 Math.sqrt()를 사용해 정수 x를 구한다. 
		//2. 특정숫자의 제곱근 값을 계산해주는 메소드 Math.pow를 사용해 정수x+1한 것에 제곱을 구한다.
		//3. Math.sqrt(ans)로 정수x를 이기 때문에 소수점 확인하고 true/false로 반환하는 메소드 
    //   Number.isInteger()를 사용해 반환해 해서 맞는값을 return 해준다. 
    return Number.isInteger(Math.sqrt(ans)) ? Math.pow( Math.sqrt(ans)+1, 2) : -1
}

다른 사람들 풀이 

function nextSqaure(n){
  var result = 0;
  var x = 0;
// x*x < n이 제곱값이 제곱한 값보다 작다면 x = x + 1한다.

  while (x*x < n){
    x++;
  }
// x*x == n 값이 같다면 제곱근이기 때문에 x*x를 리턴한다. 
  if (x*x == n){
    x++;
    result = x*x; 
  }else{
    result = 'no';
  }

  return result;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + nextSqaure(121));
function nextSqaure(n){
 // n % Math.sqrt(n) 로 나누었어서 떨어지는 값이 0 정수이기에 
  switch(n % Math.sqrt(n)){
    case 0:
// Math.pow(Math.sqrt(n) + 1, 2)를 리턴하고 
      return Math.pow(Math.sqrt(n) + 1, 2);
    default:
      return "no"
  }
}

'개발일기 > 알고리즘' 카테고리의 다른 글

하샤드 수  (0) 2021.11.10
콜라츠 추측  (0) 2021.11.10
정수 내림차순으로 배치하기  (0) 2021.11.10
자연수 뒤집어 배열로 만들기  (0) 2021.11.10
자릿수 더하기  (0) 2021.11.10
    '개발일기/알고리즘' 카테고리의 다른 글
    • 하샤드 수
    • 콜라츠 추측
    • 정수 내림차순으로 배치하기
    • 자연수 뒤집어 배열로 만들기
    코더 장군
    코더 장군
    강아지 키우고 있는 소소한 개발자 성장기를 쓰는 일기장입니다

    티스토리툴바