배운 코드 정리

돌아온 정수 제곱근 판별

fpzmfks 2024. 7. 2. 14:52

여태컷 코드카타를 첫번째 문제부터 풀다가 오늘에 이르러 첫날에 날 좌절하게 했던 정수 제곱근 판별 함수를 풀게 되었다. 지금에 와서 다시 내가 푼 해답을 보니 if문 자체에 대한 이해와 return에 대한 이해는 크게 틀리지 않았지만 주어진 값 n에 대한 루트 값 x에 대한 정의가 이상하게 되어 있다는 것을 알았다. 

 

function solution(n) {

      var x=n/x

      if((n == x*x)&&(Number.isInteger(x))) {
        return((x+1)*(x+1));
      } else {
        return(-1);
     }

}

 

나는 오늘도 저번처럼 이렇게 n의 루트 값 x를 정의하고 활용하겠다는 생각을 했으나, Math.sqrt()이라는 함수를 알게 되고 x값을 따로 정의할 필요가 없다는 것을 깨달았다. Math.sqrt()는 매개변수에 루트를 씌워주는 함수로 Math.sqrt(n)은 내가 원하던 x값 그 자체이다. 때문에 이를 활용하여 해답을 작성하면

 

function solution(n) {
    var answer = 0;
    if(Number.isInteger(Math.sqrt(n))) {
        answer = Math.pow(Math.sqrt(n)+1,2);
    } else {
        answer = -1;
    }
    return answer;
}

로 정상적으로 작동하는 것을 확인했다. 같이 알게 된 Math.pow()로 다시 제곱도 해준 코드이다.  사실 이 풀이는 다른 사람의 풀이에서 힌트를 얻은 것인데, 그 풀이에서는 if문을 (조건문) ? true:false 로 사용하는 것을 보고 조건문 연산자 ?에 대해 이해하게 되었다. 

 

이 문제를 풀지 못해서 자바스크립트에 큰 장벽을 느끼던 게 얼마 전인데, 이제는 코드의 구조를 이해해나가고 있으니 개발자가 되는 것도 충분히 가능한 일처럼 느껴진다. 앞으로도 열심히 배워서 자바스크립트를 잘 다룰 수 있게 될 것이다. 

'배운 코드 정리' 카테고리의 다른 글

min, splice, filter, apply  (0) 2024.07.11
indexOf, sort  (0) 2024.07.09
자연수 뒤집기  (0) 2024.07.01
배열의 평균 값  (0) 2024.06.21
각도기 함수와 짝수 더하기  (0) 2024.06.20