본문 바로가기
Algorithm

[백준] 단계별로 풀어보기 1단계 | Node.js

by Vintz 2021. 6. 24.
반응형

백준 알고리즘 1단계 입출력과 사칙연산

01. We love kriii

console.log('강한친구 대한육군');
console.log('강한친구 대한육군');

02. 고양이

console.log(`\\ /\\`);
console.log(` ) ( ')`);
console.log(`( / )`);
console.log(` \\(__)|`);

03. 개

console.log(`|\\_/|`);
console.log(`|q p| /}`);
console.log(`( 0 )"""\\`);
console.log('|"^"` |');
console.log(`||\_/=\\\\\_\_|`);

04. 사칙연산

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
});

rl.on('line', line => {
  const input = line.split(' ');
  const division = Number(input[0]) / Number(input[1]);

  console.log(Number(input[0]) + Number(input[1]));
  console.log(Number(input[0]) - Number(input[1]));
  console.log(Number(input[0]) \* Number(input[1]));
  console.log(Math.floor(division));
  console.log(Number(input[0]) % Number(input[1]));

  rl.close();
})
.on('close', () => {
  process.exit();
});

05. 나머지

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
});

rl.on('line', line => {
  const input = line.split(' ');
  const a = Number(input[0]);
  const b = Number(input[1]);
  const c = Number(input[2]);

  console.log((a + b) % c);
  console.log(((a % c) + (b % c)) % c);
  console.log((a * b) % c);
  console.log(((a % c) * (b % c)) % c);

  rl.close();
}).on('close', () => {
  process.exit();
});

06. 곱셈

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
});

const input = [];

rl.on('line', line => {
  if (input.length === 2) rl.close();
  input.push(line);
}).on('close', () => {
  const a = Number(input[1][2]);
  const b = Number(input[1][1]);
  const c = Number(input[1][0]);

  console.log(Number(input[0] * a));
  console.log(Number(input[0] * b));
  console.log(Number(input[0] * c));
  console.log(Number(input[0]) * Number(input[1]));
  process.exit();
});

고양이와 개를 출력할 때부터 재미가 붙어서 1단계를 한번에 다 풀게 되었다. 게임하듯이 채워나가는 느낌이라 재밌게 플레이했다.

프로그래머스에선 입출력에 대해 신경쓰지 않아도 돼서 알고리즘 푸는 사이트는 원래 다 그런 줄 알았다. 사칙연산때부터 뭔가 이상하다 싶더니 백준은 Node.js 환경에서 입력부분도 구현해야 한다.

Node.js의 입출력은 readline 모듈을 통해 해결했다.

The readline module provides an interface for reading data from a Readable stream (such as process.stdin) one line at a time. It can be accessed using: - Node.js 공식문서

공식문서에 위와 같이 나와있는데 "데이터를 읽을 수 있는 인터페이스를 제공한다." 정도인 것 같다. 결국 사용은 다음과 같다.

const readline = require('readline');

그 다음 예제가 아주 친절하게 나와있다.

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('What do you think of Node.js? ', (answer) => {
  // TODO: Log the answer in a database
  console.log(`Thank you for your valuable feedback: ${answer}`);

  rl.close();
});

// 입력 : What do you think of Node.js? amazing(입력 부분)
// 출력 : Thank you for your valuable feedback: amazing

이것저것 만져보다 readline.createInterface()를 통해 인터페이스를 생성하고 rl.close()로 입력을 종료하는 것까지 알게 되었고 이정도만 알아도 1단계 문제는 풀 수 있었다.


프로그래머스가 사용자 경험이 굉장히 좋다는 걸 깨달았다. 그런데 백준은 백준대로 장점도 있고 적응 좀 되더니 나름 매력(?)이 있다. 구현사항도 쉽고 초반이라 그런지 모르겠지만 시간 가는 줄 모르고 풀었다.

반응형