여태컷 코드카타를 첫번째 문제부터 풀다가 오늘에 이르러 첫날에 날 좌절하게 했던 정수 제곱근 판별 함수를 풀게 되었다. 지금에 와서 다시 내가 푼 해답을 보니 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 |