블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다
문제
풀이
전체 코드
const solution = (input) => {
const dial = [...Array(26).keys()].reduce((acc, i) => {
const n = 65 + i;
const c = String.fromCharCode(n);
if (n < 68) acc[c] = 2;
else if (n < 71) acc[c] = 3;
else if (n < 74) acc[c] = 4;
else if (n < 77) acc[c] = 5;
else if (n < 80) acc[c] = 6;
else if (n < 84) acc[c] = 7;
else if (n < 87) acc[c] = 8;
else if (n < 91) acc[c] = 9;
return acc;
}, {});
return input
.split('')
.map((s) => dial[s] + 1)
.reduce((acc, n) => acc + n, 0);
};
require('readline')
.createInterface(process.stdin, process.stdout)
.on('line', (input) => console.log(solution(input)))
.on('close', () => process.exit(0));
상세 풀이
영문자가 다이얼 몇번인지 알기 위해 dial 이란 Map을 생성했다. 그리고, 각 다이얼까지 얼마나 시간이 소요되는지 value 값에 소요시간을 담았다. 예를들어, 아래와 같다.
{
A: 2, B: 2, C: 2,
D: 3, E: 3, F: 3,
// ...
}
입력값을 한 단어로 나눈뒤에, 위에서 생성한 map에서 소요시간을 가지고 와서 합을 구했다. 문제가 길어서 그렇지 어려운 문제는 아니었다.
return input
.split('')
.map((s) => dial[s] + 1)
.reduce((acc, n) => acc + n, 0);
전체 코드
https://github.com/bluemiv/Algorithm/blob/master/baekjoon/nodejs/src/ex05/ex5622.js
풀이 결과
관련 글
2022.07.21 - [Algorithm/Beakjoon] - jest 단위테스트를 이용하여 백준 알고리즘 문제 편하게 풀기
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
백준 10818번 / 최소, 최대 (nodejs 알고리즘 풀이) (0) | 2022.08.27 |
---|---|
백준 2941번 / 크로아티아 알파벳 (nodejs 알고리즘 풀이) (0) | 2022.08.25 |
백준 1157번 / 단어 공부 (nodejs 알고리즘 풀이) (0) | 2022.08.21 |
백준 11720번 / 숫자의 합 (nodejs 알고리즘 풀이) (0) | 2022.08.19 |
백준 10809번 / 알파벳 찾기 (nodejs 알고리즘 풀이) (0) | 2022.08.17 |