[node.js] 백준 입출력과 사칙연산 풀이 모음 (2)

송히·2023년 1월 9일
0
post-thumbnail

입출력과 사칙연산 풀이 모음 (2)

: node.js를 이용한 백준 단계별로 풀어보기


🔍 18108번: 1998년생인 내가 태국에서는 2541년생?!

클릭해서 문제 전체 보기🔼

📖 풀이 코드

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString();

console.log(Number(input) - 543);

💚 추가 학습~
자바스크립트의 문자열을 숫자로 변환하는 방법은 여러가지이다.
대부분 숫자로 변환될 수 없는 값을 넣으면 NaN을 반환한다.

  • Number(): 가독성이 좋음
  • +num : 단항 더하기 연산자, 문자열 앞에 붙임
  • parseInt() or parseFloat(): 문자열을 정수 or 실수로 반환
  • num * 1 or num / 1 or num - 1: 문자열에 1 곱하기 or 1로 나누기 or 1 빼기로 사용
  • ~~num: 문자열을 정수로 반환, 값의 제한 있음, 숫자로 변환될 수 없는 값은 0을 반환
  • Math.ceil() or Math.floor() or Math.round(): 문자열의 소수점을 올림 or 내림 or 반올림하여 정수 반환

🔍 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰

클릭해서 문제 전체 보기🔼

📖 풀이 코드

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

let inputArr = [];
input.forEach((num) => inputArr.push(+num));

console.log(1 - inputArr[0]);
console.log(1 - inputArr[1]);
console.log(2 - inputArr[2]);
console.log(2 - inputArr[3]);
console.log(2 - inputArr[4]);
console.log(8 - inputArr[5]);

🔍 10430번: 나머지

클릭해서 문제 전체 보기🔼

📖 풀이 코드

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

let inputArr = [];
input.forEach((num) => inputArr.push(+num));

const isModulo = (value) => {
  return value % inputArr[2];
};

const isPlusModulo = () => {
  return isModulo(inputArr[0]) + isModulo(inputArr[1]);
};

const isMultiplModulo = () => {
  return isModulo(inputArr[0]) * isModulo(inputArr[1]);
};

console.log(isModulo(inputArr[0] + inputArr[1]));
console.log(isModulo(isPlusModulo()));
console.log(isModulo(inputArr[0] * inputArr[1]));
console.log(isModulo(isMultiplModulo()));

📢 풀이 설명
출력해야 하는 식은 (A+B)%C, ((A%C) + (B%C))%C, (A×B)%C, ((A%C) × (B%C))%C 총 4개이다. 이때 각 식에서 반복해서 사용되면 함수로 만들었다.
(k) % C 형태는 const isModulo, (A % C) + (B % C) 형태는 const isPlusModulo, (A % C) * (B % C) 형태는 isMultiplModulo로 생성해 재사용하였다.


🔍 2588번: 곱셈

클릭해서 문제 전체 보기🔼

📖 풀이 코드

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

let inputArr = [+input[0]];

const newInputArr = inputArr.concat(input[1].split("").map((item) => +item));

const fisrtMultipl = newInputArr[0] * newInputArr[3];
const secondMultipl = newInputArr[0] * newInputArr[2];
const thirdMultipl = newInputArr[0] * newInputArr[1];
const finalValue = fisrtMultipl + secondMultipl * 10 + thirdMultipl * 100;

console.log(fisrtMultipl);
console.log(secondMultipl);
console.log(thirdMultipl);
console.log(finalValue);

💚 추가 학습~

  • concat(): 기존 배열 arr에 배열이나 값들을 파라미터로 받아 끝에 추가하여 합치고 새 배열로 반환한다.
    파라미터로 배열을 받으면, 그 안의 요소를 각각 꺼내 추가한다.


🔍 10171번: 고양이

클릭해서 문제 전체 보기🔼

📖 풀이 코드

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

💚 추가 학습~
자바스크립트 특수문자 출력 방법 ▶ '이스케이프 처리'

  • \: 역슬래시, 특수문자 앞에 붙임
문자출력문자출력
\''\n개행(줄바꿈)
\""\r캐리지 리턴(CR, 복귀)
\\ \\t수평탭(TAB)
\0NULL\b백스페이스
\xXX2글자 XX(16진수)가 표시된 Latin-1 문자\f폼피드(FF)
\uXXXX4글자 XXXX(16진수)가 표시된 Unicode문자\v수직탭
  • `: 백틱, 2개의 백틱 사이에 있는 모든 내용이 문자열 처리

🔍 10172번:

클릭해서 문제 전체 보기🔼

📖 풀이 코드

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

📢 풀이 설명
위 코드의 3번째 줄 console.log('( 0 )"""\\');에서 """을 출력하기 위해 문자열을 " 이 아닌 '으로 감쌌다.
백틱이 아닌 쌍따옴표, 작은 따옴표 둘은 큰 차이가 없다. 특수문자를 출력하기 위해서는 둘을 혼합해서 사용해도 되지만, 코드의 통일성을 위해서는 한가지만 사용하길 추천한다.


🔍 25083번: 새싹

클릭해서 문제 전체 보기🔼

📖 풀이 코드

console.log(`         ,r'"7`);
console.log("r`-_   ,'  ,/");
console.log(` \\. ". L_r'`);
console.log("   `~\\/");
console.log("      |");
console.log("      |");

참고한 자료(클릭하면 이동): 문자열 숫자 변환, 특수문자 출력 방법

profile
데브코스 프론트엔드 5기

0개의 댓글

관련 채용 정보