본문 바로가기

항해99

[항해99]TIL_알고리즘5

반응형

문제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