백준 5622번 Node.js 문제풀이

Cho Dragoo·2021년 5월 24일
0
post-thumbnail

JavaScript 백준 온라인 알고리즘 공부

백준 5622 번 Node.js 문제풀이

다이얼
https://www.acmicpc.net/problem/5622



본인이 제출한 답안

const fs = require("fs");
const input = (
  process.platform === "linux"
    ? fs.readFileSync("/dev/stdin").toString()
    : `UNUCIC`
)
  .trim()
  .split("");

for (let i = 0; i < input.length; i++) {
  let alphNumber = input[i].charCodeAt();
  alphNumber >= 65 && alphNumber <= 67
    ? (input[i] = 2)
    : alphNumber >= 68 && alphNumber <= 70
    ? (input[i] = 3)
    : alphNumber >= 71 && alphNumber <= 73
    ? (input[i] = 4)
    : alphNumber >= 74 && alphNumber <= 76
    ? (input[i] = 5)
    : alphNumber >= 77 && alphNumber <= 79
    ? (input[i] = 6)
    : alphNumber >= 80 && alphNumber <= 83
    ? (input[i] = 7)
    : alphNumber >= 84 && alphNumber <= 86
    ? (input[i] = 8)
    : alphNumber >= 87 && alphNumber <= 90
    ? (input[i] = 9)
    : 0;
}

let overTime = 1;
let minimumTime = input.map((e) => e + overTime).reduce((a, b) => a + b);

console.log(minimumTime);

풀이과정 소감

  • 로직의 구조는 단순하지만 if문을 많이 반복하는 모양새가 되버렸다. 조건문에 일정한 숫자 증가로 뭔가 힌트가 될만한 패턴이 있을지는 모르나 7과 9를 대입하는 예외가 섞어서 더 줄이기 힘들어졌다. 코드를 줄일 수있는 무언가의 패턴이 있을까? 좀 더 고민이 필요한 문제인것 같다....
profile
어떤 문제든 파악 할 수 있으며 해결책을 찾을 수 있는 개발능력을 꿈꾸고 있습니다.

1개의 댓글

comment-user-thumbnail
2021년 11월 17일

문제에서 해당 상수들은 주어졌으니, 굳이 chatCode를 사용하지 않고도
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});

let input = '';
rl.on('line', (line) => input = line)
.on('close', () => {
const A = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'];
console.log(input.split('').reduce((sum, cur) => {
const i = A.findIndex((x) => x.includes(cur));
if(i > -1) sum += (i + 3);
return sum;
},0));
})
이렇게 해결하는 방식도 있겠네요

답글 달기