[ 백준 ] 1871 좋은 자동차 번호판 [ js ]

Ann·2022년 9월 12일
0

Algorithm

목록 보기
22/53

1871 좋은 자동차 번호판

문제

앨버타의 자동차 번호판은 ABC-0123 (세 글자, 네 숫자)와 같이 두 부분으로 나누어져 있다.
좋은 번호판은 첫 번째 부분의 가치와 두 번째 부분의 가치의 차이가 100을 넘지 않는 번호판이다.
글자로 이루어진 첫 번째 부분의 가치는 글자를 26진법 수처럼 계산한다. (각 자리가 [A..Z]) 예를 들어, "ABC"의 가치는 28 (0×262 + 1×261 + 2×260)이 된다. "ABC-0123"은 |28 - 123| ≤ 100 이기 때문에, 좋은 번호판이다.
자동차 번호판이 주어졌을 때, 좋은 번호판인지 아닌지를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 번호판의 수 N (1 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 자동차 번호판이 LLL-DDDD 형식으로 주어진다.

출력

각각의 자동차 번호판에 대해서, 좋은 번호판이면 "nice"를, 아니면 "not nice"를 출력한다.

풀이

// let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let input = [2,
`ABC-0123`,
`AAA-9999`,
]
let N = parseInt(input[0]);
function Trans(string){
    let num = string.charCodeAt(0) - 65;
    return num;
}

for(let i=1; i<=N; i++){
    let arr = input[i].split('');
    let string = arr.slice(0,3);
    let num1 = Trans(string[0])*Math.pow(26,2)+Trans(string[1])*26+Trans(string[2]);
    let numArr = arr.slice(4).join('');    
    let num2 = parseInt(numArr);
    
    let answer = num1-num2;
    if(Math.abs(answer)<=100){
        console.log("nice")
    }else{
        console.log("not nice")
    }
}

알파벳 부분을 아스키코드로 변환한후 A=65이기 때문에 65를 빼주어서 0부터 시작되도록 하였다
코드를 좀더 깔끔하게 정리하여 쓸 수 있도록 더 공부해야겠다...

profile
안녕하세요

0개의 댓글