백준 5622번 다이얼-JS

yugyeongKim·2021년 10월 17일
0

백준

목록 보기
13/52
post-custom-banner

- 내가 짠 코드

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('');

let alphabet = [];
let alphabet_s = '';

// ** 새로알게된: if조건문 ||
// 1. 번호에 해당하는 알파벳그룹을 배열로 생성o 2. 문자에 해당하는 숫자를 찾는다 
// 3. 해당 숫자n+1 = 걸리는 시간t 4. 문자들을 찾는 배열 수행 5. 모든 t합산 

for(let i = 65; i < 91; i++) {
    alphabet.push(String.fromCharCode(i));
}

//알파벳 대문자 배열 생성(다이얼 공백 포함된)
for(let i = 0; i < alphabet.length; i++) {
    if(i < 20) {
        if((i-3)%4 === 0 ) {
            alphabet.splice(i,0,' ');
        }
    } else {
        if(i === 24 || i === 28) {
            alphabet.splice(i,0,' ');
        }
    }
}

//공백이 포함된 배열을 문자열로 생성
alphabet.forEach(element => {
    alphabet_s += element;
});

let alphabet_arr = alphabet_s.split(' ')
let num = [];
let t = 0;
// i+3 = t
console.log(alphabet_arr)

// 문자에 대응되는 배열index찾기
for(let i=0; i < alphabet_arr.length; i++) {
    let len = alphabet_arr[i].split('').length;
    console.log(len);
    for(let j = 0; j < len; j++)
    input.forEach(element => {
        if(element === alphabet_arr[i][j]) {
            num.push(i)
        }
    });
}

console.log(num);
let answer = num.reduce((a,b) => { return a+b}) + num.length*3
console.log(answer);

많은 뻘짓들을 거친 후 탄생..... 알고리즘을 설명하자면
1. 알파벳 배열 생성- 각 다이얼에 맞는 알파벳 배열을 생성하기 위해 배열에 구분 위한 공백 포함
2. 배열을 문자열로 바꿈(띄어쓰기 단위로 찐다이얼해당 알파벳 배열을 만들기 위해)
3. 문자에 대응되는 배열 index찾아 더하고, 그 각 index+3해줌(3만큼차이나니까)

post-custom-banner

0개의 댓글