1. 문제
문제 링크
2. 풀이
2.1 생각해 볼 만한 케이스
- 자음은 왼손, 모음은 오른손
- 거리 |x1-x2|+|y1-y2|
var fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
const left = input[0].split(" ")[0];
const right = input[0].split(" ")[1];
const words = input[1].split("");
const rights = "yuiophjklbnm";
const keyBoard = [
["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"],
["a", "s", "d", "f", "g", "h", "j", "k", "l"],
["z", "x", "c", "v", "b", "n", "m"],
];
function isRight(x) {
for (let i = 0; i < rights.length; i++) {
if (x === rights[i]) return true;
}
return false;
}
function getIndex(x) {
for (let i = 0; i < keyBoard.length; i++) {
for (let j = 0; j < keyBoard[i].length; j++) {
if (x === keyBoard[i][j]) return (x = [i, j]);
}
}
}
function solution(left, right, words) {
let answer = 0;
left = getIndex(left);
right = getIndex(right);
for (let x of words) {
let position = isRight(x);
x = getIndex(x);
if (position) {
answer += Math.abs(right[0] - x[0]) + Math.abs(right[1] - x[1]);
answer++;
right = x;
} else {
answer += Math.abs(left[0] - x[0]) + Math.abs(left[1] - x[1]);
answer++;
left = x;
}
}
return answer;
}
console.log(solution(left, right, words));