본문 바로가기
Algorithm/BOJ

if문 편 - Node.js로 [백준/BOJ] 단계별로 풀어보기를 풀어보다

by Muko 2020. 4. 12.

BOJ 단계별로 풀어보기 'if문'

 

 

저번 포스팅에 이어, 이번에는 백준 단계별로 풀어보기의 두 번째인 if문 편에 대해서 작성하려고 합니다. 프로그래밍 언어를 배우고, 공부하고 익히는데는 문제를 풀어보면서 직접 코딩하는 것이 최고입니다. 책이나 유튜브 영상, 블로그 글을 보면서 예제를 따라치는 것도 좋지만 재미가 없잖아요! 직접 코딩하고 그 결과가 눈에 보이는 재미를 느끼면서 공부하는 것이 최고라고 생각합니다. 백준 사이트를 아직 모르신다면, 그리고 프로그래밍이나 코딩 공부를 접한지 얼마 되지 않으셨다면, 혹은 비전공자라면 백준 사이트에 들어가셔서 가입해보세요! 그리고 문제를 풀 때마다 마이페이지에 들어가면 푼 문제 수와 랭킹이 나오는데, 이 랭킹을 올리는 재미도 쏠쏠합니다.

그럼 if문을 풀어보도록 하겠습니다. 저는 자바스크립트로 문제를 풀어나갈 예정이라 혹시 자바스크립트에 대해서 잘 모르시겠다는 분들은 자바스크립트 기초 - 조건문 를 보고 참고하시면 됩니다.




1. BOJ 1330 - 두 수 비교하기

이 문제는 두 정수 A와 B가 주어졌을 때, A와 B를 비교한 결과값을 출력하는 문제입니다. 정말 '조건문'을 사용할 수 있는지 물어보는 문제입니다.

코드 접기/펼치기
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' ');

const A = parseInt(input[0]);
const B = parseInt(input[1]);

if (A > B) {
  console.log('>');
} else if (A < B) {
  console.log('<');
} else {
  console.log('==');
}




2. BOJ 9498 - 시험 성적

이 문제는 자바스크립트 입문편 - 조건문에 올렸던 예제와 비슷한 문제입니다. 시험 점수를 입력받아서 각 점수별로 등급을 출력하는 문제이고, 마찬가지로 if문을 이용해서 가뿐하게 해결할 수 있는 문제입니다.

코드 접기/펼치기
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString();

const value = parseInt(input);
if (value >= 90) {
  console.log('A');
} else if (value >= 80) {
  console.log('B');
} else if (value >= 70) {
  console.log('C');
} else if (value >= 60) {
  console.log('D');
} else {
  console.log('F');
}




3. BOJ 2753 - 윤년

이 문제는 조건이 보다 까다로워진 문제입니다. 연도가 주어졌을 때 윤년인가 아닌가를 출력하는 문제인데요, 문제에서 제시하는 여러 조건을 자세히 살펴보고 조건문으로 구현하면 무난하게 해결할 수 있습니다.

코드 접기/펼치기
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString();

const year = parseInt(input);
if (year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)) {
  console.log(1);
} else {
  console.log(0);
}




4. BOJ 14681 - 사분면 고르기

조건문은 참으로 다양한 곳에서 사용될 수 있습니다. 사실 학문이나 실생활에 있는 수많은 조건 속에서 우리는 살아가고 있죠. 이번 문제는 조건문을 이용해서 사분면을 알아내는 문제입니다. 좌표값이 주어지고 조건문을 이용해서 답을 출력하는 문제이고, 분야는 달라졌을지언정 난이도는 계속해서 쉬운 문제들로 구성되어 있습니다. 물론 처음 프로그래밍을 하시는 분들에게는 어려울 수 있지만, 그 어려움이 문제가 어려워서라기 보다는 프로그래밍, 혹은 프로그래밍 언어 자체에 익숙하지 않음에서 오는 어려움이라고 생각하시면 됩니다.

! 이 문제를 풀면서 발견한 이슈
지금까지 BOJ에서 자바스크립트로 입력을 받기 위해 사용한 fs에서 에러가 발생하는 문제입니다. 다른 문제에서도 동일한 문제가 발생하는 경우가 있다고 하는데, 그래서 앞으로는 에러가 발생하지 않는 방식으로 입력을 받아오고자 합니다. 백준 입력방법 참고 사이트에서 저도 방법을 배웠습니다 👍

코드 접기/펼치기
const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let input = [];
rl.on('line', function (line) {
  input.push(parseInt(line));
}).on('close', function () {
  const X = input[0];
  const Y = input[1];

  if (X > 0) {
    if (Y > 0) {
      console.log(1);
    } else {
      console.log(4);
    }
  } else {
    if (Y > 0) {
      console.log(2);
    } else {
      console.log(3);
    }
  }
    process.exit();
});




5. BOJ 2884 - 알람 시계

이 문제부터 무언가 본격적인 백준 사이트 문제같은 문제가 나오기 시작합니다. 문제 설명부터 시작해서 입력 설명, 출력 방법에 대한 설명이 보편적인 백준사이트 문제 방식입니다. 이 문제는 원래 설정되어 있던 알람을 45분 당겨서 설정하는 것을 원하는데, 우리가 그 시간 설정값을 계산해서 출력하는 문제입니다. 이 문제는 분이 마이너스가 되었을 때 어떻게 처리할지에 대한 고민을 결과로 담아내면 해결할 수 있는 문제입니다.

코드 접기/펼치기
const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let input = [];

rl.on('line', (line) => {
  input = line.split(' ').map((el) => parseInt(el));
}).on('close', () => {
  if (input[1] - 45 >= 0) {
    console.log(input[0], input[1]-45);
  } else if (input[0] - 1 >= 0) {
    console.log(input[0]-1, 15+input[1]); // 60 - (45 - input[1])
  } else {
    console.log(23, 15+input[1]);
  }
  process.exit();
});




이번 포스팅에서도 끝까지 따라오시느라 수고하셨습니다!
다음 포스팅에서 만나요~

댓글4