반응형
문제1 : 하샤드 수
1.1 풀이
- 정수 x의 자릿수 합을 만들어야한다. 이를 위해 String()과 split()을 활용 x를 배열로 만들어 나눈다.
- reduce()를 활용, num에 누산한다.
- 삼항연산자를 활용,
정수 x와 누산한 값num을 나눴을때 ? 떨어지지 않으면 false : 나눠 떨어지면 true
function solution(x) {
let arr = String(x).split('');
let num = arr.reduce((a, b) => a + parseInt(b), 0);
return x%num ? false : true
}
1.2 반복문 활용한 풀이
function Harshad(n){
var result ;
var sum = 0;
var arr = String(n).split('');
for(var i=0; i<arr.length; i++) {
sum += Number(arr[i]);
}
return n % sum == 0 ? true : false;
}
문제2 : 3진법 뒤집기
2.1 풀이
- n을 3진법으로 만들기 위해 while()을 활용
- n을 나눈 값이 0이 아니라면
- n%3을 배열에 담은 뒤, n/3의 근접한 정수 값으로 n%3을 반복한다.
- n이 0으로 나눠떨어지는 순간 join('')으로 배열을 합친뒤
- parseInt(answer.join(''), 3)으로 정수화한다.
❗️parseInt(string,radix)을 활용하면 진법으로 변환 할 수 있다. 마찬가지로 toString(radix)을 이용 진법으로 변환 가능하다.
function solution(n) {
let answer = [];
while(n !== 0){
answer.push(n%3);
n = Math.floor(n/3);
};
return parseInt(answer.join(''),3);
}
2.2 toString(),과 parseInt()활용한 풀이
function solution(n) {
let reversed = n.toString(3).split('').reverse().join('')
return parseInt(reversed, 3)
}
반응형
'항해99' 카테고리의 다른 글
[항해99]TIL_비밀번호 해싱 (0) | 2021.11.15 |
---|---|
[항해99]WIL(2주차)_ECMAScript, ES5~ES6 (1) | 2021.11.14 |
[항해99]TIL_알고리즘4 (1) | 2021.11.11 |
[항해99]TIL_알고리즘3 (0) | 2021.11.10 |
[항해99]TIL_알고리즘2 (0) | 2021.11.09 |