Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트로 숫자를 7진수 표현으로 변환하는 방법

10진수를 2진수로 변환할 때 숫자를 반복해서 2로 나누듯이, 7진법(base-7)에서는 주어진 숫자를 계속해서 7로 나눈 뒤 각 단계의 나머지를 모으면 7진수 표현을 얻을 수 있습니다.

이번 글에서는 임의의 숫자를 입력받아 그 숫자의 7진수 표현을 문자열로 반환하는 자바스크립트 함수를 작성해 보겠습니다.

문제 예시

base7(100) = '202'

100을 7진수로 변환하면 '202'가 됩니다. 검산해 보면 2×49 + 0×7 + 2×1 = 98 + 2 = 100이므로 올바른 결과입니다.

구현 코드

const num = 100;

const base7 = (num = 0) => {
  // 음수 처리: 부호를 저장하고 절댓값으로 변환
  const sign = num < 0 ? '-' : '';
  num = Math.abs(num);

  let result = '';
  while (num > 0) {
    // 7으로 나눈 나머지를 결과 문자열 앞에 붙임
    result = (num % 7) + result;
    // 소수점 이하를 제거하기 위해 정수 변환
    num = Math.floor(num / 7);
  }

  return result ? sign + result : '0';
};

console.log(base7(num));

출력 결과

위 코드를 콘솔에서 실행하면 다음과 같은 결과가 출력됩니다.

'202'

코드 동작 원리

  • 부호 처리: 음수가 입력되면 부호('-')를 미리 저장한 뒤, 절댓값에 대해 변환을 진행합니다.
  • 나머지 계산: num % 7 연산으로 현재 자릿수를 구하고, 결과 문자열의 앞쪽에 붙여 자릿수 순서를 유지합니다.
  • 정수 나눗셈: Math.floor(num / 7)로 소수점 이하를 버려 다음 자릿수 계산을 준비합니다.
  • 0 처리: 입력이 0인 경우 while 루프가 실행되지 않으므로, 빈 문자열 대신 '0'을 반환하도록 처리했습니다.

마무리

이 알고리즘은 시간 복잡도가 O(log₇ n)으로 매우 효율적입니다. 같은 원리를 응용하면 2진수, 8진수, 16진수 등 임의의 진법으로 손쉽게 변환하는 함수를 만들 수 있습니다. 진법 변환 로직은 코딩 테스트에서도 자주 등장하는 기본 개념이므로 꼭 익혀두시길 추천합니다.