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

JavaScript로 고객 ID 기반 차량 번호판 계산하기


문제 정의

어느 도시 N의 자동차 등록 시스템은 두 가지 종류의 번호를 부여합니다.

  • 고객 ID(Customer ID) — 0부터 17558423까지의 자연수로, 차량 구매자에게 순서대로 할당됩니다. 첫 번째 고객은 ID 0을, 두 번째 고객은 ID 1을 받는 방식입니다.

  • 번호판(Number Plate) — 차량에 부여되는 번호로, 시리즈(a부터 z까지의 라틴 소문자 3개)와 일련번호(0부터 9까지의 숫자 3개)로 구성됩니다.

    예를 들어 aaa001과 같은 형태입니다. 각 번호판은 특정 고객 ID와 연결되어 있으며, 번호판 aaa001은 고객 ID 0에, aaa002는 고객 ID 1에 대응됩니다.

즉, 우리가 작성해야 할 것은 고객 ID를 입력받아 그에 대응하는 번호판을 계산하고 문자열로 반환하는 JavaScript 함수입니다.

구현 코드

다음은 이 문제를 해결한 코드입니다.

const id = 545664;
const findNumberPlate = (id = 0) => {
    const letters = 'abcdefghijklmnopqrstuvwxyz';
    let num = String(id % 999 + 1);
    if(num.length !== 3);
       while(num.length !== 3){
          num = '0' + num;
       };
       const l = Math.floor(id / 999);
       return letters[l % 26] + letters[(Math.floor(l / 26)) % 26] + letters[(Math.floor(l / (26 * 26))) % 26] + num;
};
console.log(findNumberPlate(id));

코드 동작 원리

이 함수의 핵심 로직은 다음과 같이 정리할 수 있습니다.

  • 일련번호 계산: id % 999 + 1을 통해 한 시리즈(알파벳 조합)당 최대 999개의 번호판이 매겨지도록 합니다. 결과가 세 자리 미만일 경우 앞에 0을 채워 세 자리로 맞춥니다.

  • 시리즈(문자) 계산: Math.floor(id / 999)로 몇 번째 알파벳 조합인지 구한 뒤, 26진법처럼 각 자리를 나누어 세 개의 소문자를 결정합니다.

  • 결합: 계산된 문자 세 개와 일련번호를 이어 붙여 최종 번호판 문자열을 만듭니다.

출력 결과

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

ava211

고객 ID 545664에 대응하는 번호판이 ava211임을 확인할 수 있습니다.