Square Every Digit
오늘의 코드워 문제다 이제 별 6단계로 올라 갈 날도 멀지 않은 것 같다. 프로필을 보니 7개 랭크의 문제는 거의 다 푼것 같다.
오늘 문제는 역시 그렇게 어렵지 않다.
함수 인자로 숫자가 주어지면 그 숫자를 모두 한 자리 수로 나눈다음 그 각 숫자 마다의 제곱 값을 다시 리턴하면 된다. 즉, 인풋과 아웃풋은 아래와 같다.
1 | input: 9112 --> output: 81114 // 9 * 9, 1 * 1, 1*1, 2 * 2, 해서 나온 값이 되는다. |
내 해결 방법
사실 이 방법은 자바스크립트가 아니고선 조금 힘들 수도 있을 듯하다. 타입 변화가 자유로울 수 있는 자바스크립트니까 이렇게 쉽게 풀릴 수 있었다고 생각된다.
function squareDigits(num){
var arr = num.toString().split('');
var result = arr.map(el => {
return el * el
}).join('')
return Number(result);
}
// 다시 보니 체인룰로 리팩 할 수 있었다/....
function squareDigits(num){
var result = num.toString().split('').map(el => {
return el * el
}).join('')
return Number(result);
// return parseInt(result);
}
일단 코드워 자체 테스트는 통과 되서 답안을 최종적으로 리팩토링 해서 제출했다
능력자 분들의 코드
사실 이 문제는 내 코드와 그렇게 비교할게 없었다. 타입변환을 parseInt()
로 했는가 혹은 Number()
정도의 차이가 가장 컸었다. 매개변수를 루프 돌리거나 나누는 방식은 나와 그렇게 차이가 없었다.
정리
일단 다른 언어를 배워 본적이 없고 실무에서 일해 본적이 없으니 타입 체크와 변환에 대한 중요성이 얼마나 큰지 내가 느끼지를 못 하고 는 있는 상태지만 일단 이 문제 자체는 JS 자체로는 너무 반칙을 쓴다는 느낌이 드는 문제였다. 이제 타입스크립트에 대해서도 공부를 해야 하긴 하는데 이 부분은 꼭 좀 집고 넘어 가야 할 것 같다.