백준 1373 2진수 8진수 (수학)

bkboy·2022년 6월 15일
0

백준 초급

목록 보기
69/80

문제

풀이

const input = "11001100";

const sol = (input) => {
  let n = input;
  let oct = "";
  while (n.length >= 3) {
    oct = parseInt(n.slice(n.length - 3), 2).toString(8) + oct;
    // n 뒤에서 3개를 짤라 10진수로 바꾼후 8진수로
    n = n.slice(0, n.length - 3);
  }
  if (n) {
    oct = parseInt(n, 2).toString(8) + oct;
  }
  return oct;
};

// 십진수에서 다른 진수 변환 할 땐 : toString
// 다른 진수에서 십진수로 변환 할 땐 : parseInt
console.log(sol(input));
  • 그냥 2진수를 10진수로 변경하면 2의 제곱의 값이 커져서 안 풀린다.
  • 그래서 2진수를 3자리씩 끊어서 10진수로 바꾸고 그것을 8진수로 바꾼 값을 oct에 누적한다.
  • parseInt로 다른 진수의 수를 10진수로 바꿀 수 있는 것을 알았다.
profile
음악하는 개발자

0개의 댓글