728x90
문제
CODE
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on('line', function (line) {
// 입력 받은 문자를 나눔
const alphabets = line.split('');
// dial object 생성
const dial = {
2: ['A', 'B', 'C'],
3: ['D', 'E', 'F'],
4: ['G', 'H', 'I'],
5: ['J', 'K', 'L'],
6: ['M', 'N', 'O'],
7: ['P', 'Q', 'R', 'S'],
8: ['T', 'U', 'V'],
9: ['W', 'X', 'Y', 'Z'],
};
// 모든 숫자는 걸기 위해서 1초씩 더 걸리기에 미리 알파벳 길이로 초기화
let minTime = alphabets.length;
for (let i = 0; i < alphabets.length; i++) {
for (number in dial) {
// 해당 key의 value가 알파벳을 포함하고 있으면 key의 number 값을 minTime에 더해준다.
if (dial[number].includes(alphabets[i])) {
minTime += +number;
}
}
}
console.log(minTime);
// ============================ 풀이 2 ===============================
// 모든 숫자는 걸기 위해서 1초씩 더 걸린다.
let minTime = alphabets.length;
for (let i = 0; i < alphabets.length; i++) {
const ascii = alphabets[i].charCodeAt();
if (ascii <= 'C'.charCodeAt()) {
minTime += 2;
} else if (ascii <= 'F'.charCodeAt()) {
minTime += 3;
} else if (ascii <= 'I'.charCodeAt()) {
minTime += 4;
} else if (ascii <= 'L'.charCodeAt()) {
minTime += 5;
} else if (ascii <= 'O'.charCodeAt()) {
minTime += 6;
} else if (ascii <= 'S'.charCodeAt()) {
minTime += 7;
} else if (ascii <= 'V'.charCodeAt()) {
minTime += 8;
} else if (ascii <= 'Z'.charCodeAt()) {
minTime += 9;
}
}
// console.log(minTime);
rl.close();
}).on('close', function () {
process.exit();
});
처음 사용한 풀이는 최소시간을
입력받은 알파벳의 길이(모든 숫자는 걸기위해 1초씩 더 걸리기 때문)로 초기화 하고
String.charCodeAt() 을 이용하여 해당 알파벳의 아스키코드보다 작은 경우
다이얼의 숫자를 최소시간에 더하는 방식을 사용했다.
그러다 object의 key value를 이용하면 더 짧게 표현할 수 있을 거 같아 바꿔 보았다.
입력받은 알파벳을 dial object의 각 value가 포함하고 있는지
Array.includes() 를 이용하여 확인하고
포함할 경우 최소시간에 해당 key 값을 number로 변환하여 더해주는 방식이다.
'ALGORITHM > 백준 With Node.js' 카테고리의 다른 글
[백준] 1152번 / 단어의 개수 / Node.js (0) | 2021.04.26 |
---|---|
[백준] 2908번 / 상수 / Node.js (0) | 2021.04.26 |
[백준] 1152번 / 단어의 개수 / Node.js (0) | 2021.04.26 |
[백준] 1152번 / 단어의 개수 / Node.js (0) | 2021.04.26 |
[백준] 1157번 / 단어 공부 / Node.js (0) | 2021.04.25 |
댓글