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만큼차이나니까)