
1. 나의 생각 흐름
우선 숫자가 두 자리 이상의 경우를 대비해서, 배열로 만들어서 원소 하나하나로 나누어야겠다고 생각했다. 그 후에 그 숫자의 합을 처음 받은 숫자와 나누어 떨어지면 true가 리턴될 수 있게 만들어야겠다고 생각했다.
2. 내 코드 정리
function solution(x) {
let answer = true;
let sum = 0;
let arr = (x + '').split('').map(Number);
for(let x of arr){
sum += x;
}
if (x % sum !== 0) {answer = false;}
return answer;
}
그렇게 완성된 나의 코드!! 여기서도 예전 문제풀이에 자주 사용되었던 문법이 보인다. 역시 문제가 달라도 그 유형이 비슷해서 예전에 썼던 풀이를 이용해서 풀 수 있는 것 같다.
숫자를 문자로 변환 후 배열로 만들기 ( split이용 )
- 타입이 숫자(number)인 경우 split을 사용할 수 없기 때문에 숫자에 ''을 더해 문자로 만들어주고, split('')을 사용하여 배열로 만들어 주는 방법이다. --------->. (n +'').split('')
※ .map(Number)를 사용해서 한번에 바로 숫자형을 배열에 담을 수 있다
3. 다른 사람들의 코드
function solution(x) {
return x%eval([...x.toString()].join("+")) ? false : true;
}
정말 깔끔하게 삼항연산법으로 return해주었다. 그런데 저 안의 대괄호 부분과 eval에 대해서는 추가적으로 공부해야할 것 같다.
4. 결론
자주 쓰이는 문법은 이제 좀 익숙하니까 외워질때가 된것 같은데.. 이제는 다른 방법을 이용해서 풀어 봐야겠다.
'알고리즘' 카테고리의 다른 글
[Programmars] 자릿 수 더하기 (JavaScript) (0) | 2022.02.04 |
---|---|
[Programmars] x만큼 간격이 있는 n개의 숫자 (JavaScript) (0) | 2022.02.04 |
[Programmars] 핸드폰 번호 가리기 (JavaScript) (0) | 2022.02.03 |
[Programmars] 서울에서 김서방 찾기 (JavaScript) (0) | 2022.02.03 |
[Programmars] 문자열을 정수로 바꾸기 (JavaScript) (0) | 2022.02.01 |
댓글