Algorithm_javascript/5. 문자열
백준 5622번 다이얼 (javascript, node.js)
luminouswy
2023. 5. 20. 17:44
반응형
문제
- 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.
- 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
- 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
- 상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
- 할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.
입력
- 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
출력
- 첫째 줄에 다이얼을 걸기 위해서 필요한 최소 시간을 출력한다.
예제입력 1
WA
예제출력 1
13
예제입력 2
UNUCIC
예제출력 2
36
문제풀이
- 입력 값에 해당하는 알파벳을 찾아서 그에 맞는 숫자를 모두 더해서 출력
- 알파벳과 숫자 쌍을 객체로 만들어서 담아둠
- 해당 객체에 맞는 알파벳을 찾기
- 알파벳에 해당하는 숫자를 모두 더 하여 출력
- for in 을 사용하여 해당하는 키에 맞는 속성값을 출력하고
- includes() 함수를 사용하여 입력값이 있는지 확인
//5622번
//다이얼
//dial[i] == 다이얼 숫자 1을 걸려면 2초 ~ 그다음부터 1초씩증가 숫자는 (1,2,3,4,5,6,7,8,9,0) 순서
// 문자는 각해당하는 숫자번호로 눌러야됨 1,2(abc),3(def),4(ghi),5(jkl),6(mno),7(pqrs),8(tuv),9(wxyz),0
// 문자에 해당하는 숫자로 전화를 걸경우 최소시간 구하기
//1. 알파벳과 숫자 쌍을 객체로 만들기
//2. 해당 객체에서 문자 검색
//3. 키값을 출력하여 더하기
// for...in 문을 통하여 객체 문자열 반복, inlcudes()함수를 통하여 입력 값이 있는지 확인
const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("");
const number = {
ABC: 3,
DEF: 4,
GHI: 5,
JKL: 6,
MNO: 7,
PQRS: 8,
TUV: 9,
WXYZ: 10,
};
const dial = input;
let sum = 0;
for (i = 0; i < dial.length; i++) {
for (let x in number) {
if (x.includes(dial[i])) {
sum += number[x];
}
}
}
// 몰랐을때 그냥 풀었던 무식한 방법
// for (i= 0; i < dial.length; i++){
// let str = dial[i];
// if(str == 'A' || str == 'B' || str == 'C'){
// sum += 3;
// }else if(str == 'D' || str == 'E' || str == 'F' ){
// sum += 4;
// }else if(str == 'G' || str == 'H' || str == 'I' ){
// sum += 5;
// }else if(str == 'J' || str == 'K' || str == 'L' ){
// sum += 6;
// }else if(str == 'M' || str == 'N' || str =='O' ){
// sum += 7;
// }else if(str == 'P' || str == 'Q' || str == 'R' || str == 'S' ){
// sum += 8;
// }else if(str == 'T' || str == 'U' || str == 'V' ){
// sum += 9;
// }else if(str == 'W' || str == 'X' || str == 'Y' || str == 'Z' ){
// sum += 10 ;
// }
// }
console.log(sum);