치춘짱베리굿나이스

[백준] 4378 본문

트ㅏㅊ;

문제

가끔, 그러나 때때로, 우리들은 키보드에서 양손을 오른쪽으로 한 칸씩 이동한 상태로 두고 타자를 치는 경우가 있다. 즉, "ACMICPC.NET"을 위와 같은 방법으로 치게 되면 "SV,OV[V/MRY"이라는 이상한 문장을 보게 된다.

교준이는 장문을 쓰는데, 너무 급한 나머지 위와 같은 오류를 범한 채로 글을 완성해 버렸다. 이 글을 다시 쓰는 것은 교준이에게는 너무 힘든 일이다. 교준이를 대신해서 오류를 고쳐주자.

입력

입력은 여러 줄로 이루어진다. 각 줄은 숫자나 공백, 알파벳 대문자, 위의 키보드에 표시되어 있는 문장 부호로 이루어져 있다. Q, A, Z나 `(back-quote), 단어로 이루어진 키(Tab, BackSp, Control 등)는 입력의 각 줄에 포함되지 않는다. 예외적으로 공백(' ', SpaceBar)은 입력으로 들어올 수 있는데, 스페이스 바는 너무 길어서 교준이가 위의 오류를 범하지 않는다.

출력

각 줄마다 오류를 고쳐 출력한다.

풀이

const qwerty = () => {
  let input = require("fs")
    .readFileSync("/dev/stdin")
    .toString()
    .trim()
    .split("\\n");
  let stack = [];
  for (let j of input) {
    for (let i of j) {
      switch (i) {
        case "1":
          stack.push("`");
          break;
        case "2":
          stack.push("1");
          break;
        case "3":
          stack.push("2");
          break;
        case "4":
          stack.push("3");
          break;
        case "5":
          stack.push("4");
          break;
        case "6":
          stack.push("5");
          break;
        case "7":
          stack.push("6");
          break;
        case "8":
          stack.push("7");
          break;
        case "9":
          stack.push("8");
          break;
        case "0":
          stack.push("9");
          break;
        case "-":
          stack.push("0");
          break;
        case "=":
          stack.push("-");
          break;
        case "W":
          stack.push("Q");
          break;
        case "E":
          stack.push("W");
          break;
        case "R":
          stack.push("E");
          break;
        case "T":
          stack.push("R");
          break;
        case "Y":
          stack.push("T");
          break;
        case "U":
          stack.push("Y");
          break;
        case "I":
          stack.push("U");
          break;
        case "O":
          stack.push("I");
          break;
        case "P":
          stack.push("O");
          break;
        case "[":
          stack.push("P");
          break;
        case "]":
          stack.push("[");
          break;
        case "\\\\":
          stack.push("]");
          break;
        case "S":
          stack.push("A");
          break;
        case "D":
          stack.push("S");
          break;
        case "F":
          stack.push("D");
          break;
        case "G":
          stack.push("F");
          break;
        case "H":
          stack.push("G");
          break;
        case "J":
          stack.push("H");
          break;
        case "K":
          stack.push("J");
          break;
        case "L":
          stack.push("K");
          break;
        case ";":
          stack.push("L");
          break;
        case "'":
          stack.push(";");
          break;
        case "X":
          stack.push("Z");
          break;
        case "C":
          stack.push("X");
          break;
        case "V":
          stack.push("C");
          break;
        case "B":
          stack.push("V");
          break;
        case "N":
          stack.push("B");
          break;
        case "M":
          stack.push("N");
          break;
        case ",":
          stack.push("M");
          break;
        case ".":
          stack.push(",");
          break;
        case "/":
          stack.push(".");
          break;
        case " ":
          stack.push(" ");
          break;
      }
    }
    stack.push("\\n");
  }
  console.log(stack.join(""));
};

qwerty();

반성회

스위치 케이스 밭

'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글

[백준] 1074  (0) 2022.03.17
[백준] 1629  (0) 2022.03.17
[백준] 2217  (0) 2022.03.17
[백준] 1769  (0) 2022.03.17
[백준] 1145  (0) 2022.03.17
Comments