안녕하세요

[node.js] 백준 입출력과 사칙연산 단계 (자바스크립트) 2557 ~ 본문

백준 자바스크립트

[node.js] 백준 입출력과 사칙연산 단계 (자바스크립트) 2557 ~

sakuraop 2022. 4. 30. 23:59

 

클론코딩을 하면서 부족한 자바스크립트 문법은 백준을 통해서 공부합시다.

초보입니다. 코드 설명은 "참고만" 해주세요.

https://www.acmicpc.net/step/1

 

입출력과 사칙연산 단계

입출력과 사칙연산

www.acmicpc.net


2557 Hello World

아래와 같이 출력하시오.

Hello World!

제출한 답

console.log("Hello World!")

 

  • 문자열의 출력은 console.log("") 입니다.

10718 We love kriii

아래와 같이 출력하시오.

강한친구 대한육군
강한친구 대한육군

제출한 답

 

console.log("강한친구 대한육군\n강한친구 대한육군")

 

  • \n 으로 개행을 하여 한 줄에 입력했습니다.

10171 고양이

아래와 같이 출력하시오.

\    /\
 )  ( ')
(  /  )
 \(__)|

제출한 답

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

 

  • \를 출력하기 위해서는 "\\" 두 번을 연달아 입력하면 됩니다.
  • `` 백틱을 이용하여 여러줄에 걸쳐 출력할 내용을 입력합니다.

25083 새싹

아래와 같이 출력하시오.

         ,r'"7
r`-_   ,'  ,/
 \. ". L_r'
   `~\/
      |
      |

제출한 답

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

 

  • 문자열에 [작은따옴표, 큰따옴표, 백틱,  \] 이 혼재되어있습니다. 각각의 기호 앞에 \을 달아줍니다.

1000 A+B

a와 b를 아래와 같이 입력받고

1 2

결과를 아래와 같이 출력하시오.

3

제출한 답

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString().split(' ').map(number => parseInt(number));

const [a,b] = inputData
console.log(a+b)

 

  • fs (file system) 모듈을 import 합니다. node.js 는 파이썬과 달리 input이 내장되어 있지 않은 듯 합니다. 
  • readFileSyne : 테스트케이스(inputData)는 백준 사이트의 "/dev/stdin"에 있습니다.
  • toString() : 함수로 문자열 변환을 해주어야 합니다.
  • split() : 함수로 입력받은 값을 구분하여 저장합니다 ( 저장된 결과값 : inputData = [a, b] )
  • map() : 함수로 입력받을 값을 int 변환 합니다. 

1001 A-B

위와 동일한 문제로 부호만 +에서 -로 바뀌었습니다.

제출한 답

...

console.log(a-b)


10998 A×B

위와 동일한 문제로 부호만 +에서 *로 바뀌었습니다.

제출한 답

...

console.log(a*b)


1008 A/B

위와 동일한 문제로 부호만 +에서 /로 바뀌었습니다.

제출한 답

...

console.log(a/b)

 


10869 사칙연산

두 자연수 A와 B를 아래와 같이 입력받고

7 3

A+B, A-B, A*B, A/B(몫), A%B(나머지)를 아래와 같이 출력하는 프로그램을 작성하시오. 

10
4
21
2
1

제출한 답 1

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString().split(' ').map(Number);

const [a,b] = inputData
console.log(a+b)
console.log(a-b)
console.log(a*b)
console.log(Math.floor(a/b))
console.log(a%b)

 

  • Math.floor() : 나누기를 한 뒤의 결과값이 2가 출력되어야 하므로 내림을 해줍니다.
  • .map(Number) : 이전에 사용한 .map(number => parseInt(number)) 와 유사한 기능을 합니다.

 

제출한 답 2

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString().split(' ').map(Number);

const [a,b] = inputData
console.log(`${a+b} \n${a-b} \n${a*b} \n${Math.floor(a/b)} \n${a%b}`)

 

  • `${}` : console.log() 가 너무 많이 사용되어 한 줄로 표현했습니다.

10926 ??!

문자열을 입력받고

joonas

!!? 를 아래와 같이 추가 입력하여 출력하시오.

joonas??!

제출한 답

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString().trim()

console.log(`${inputData}??!`)

 

  • .trim() : 문자열의 양 끝의 공백을 제거합니다. trim()이 들어가지 않으면 문제가 발생했습니다.

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

숫자를 입력받고

2541

아래의 결과를 도출하시오.

1998

 

제출한 답

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin')

console.log(inputData-543);

 

  • .toString() : 문자열을 입력받는 것이 아니라, 숫자를 입력받았기 때문에 필요하지 않았습니다.

10430 나머지

아래와 같이 세 수 A, B, C를 입력받고

5 8 4

첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력하시오.

 

1
1
0
0

제출한 답

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString().split(' ').map(Number);
const [A,B,C] = inputData;

console.log(`${(A+B)%C}\n${((A%C) + (B%C))%C}\n${(A*B)%C}\n${((A%C) * (B%C))%C}`)

 

  • SyntaxError 가 발생해서 오타를 확인했습니다. ( 곱셈표시 "x" -> 곱셈기호 * )

2588 곱셈

(1)과 (2)위치에 들어갈 세 자리 자연수를 아래와 같이 입력받고

472
385

(3), (4), (5), (6)위치에 들어갈 값을 아래와 같이 구하는 프로그램을 작성하시오.

2360
3776
1416
181720

제출한 답

const fs = require('fs'); 
const [num1, num2] = fs.readFileSync("/dev/stdin").toString().split('\n'); 
const [num2Hundreds, num2Tens, num2Units] = num2.split(''); 

console.log(`${num1*num2Units} \n${num1*num2Tens} \n${num1*num2Hundreds} \n${num1*num2}`)

 

  • 첫번째로 입력받은 세자리수(num1)와 두번째로 입력받은 세자리수(num2)의 각 자리수([num2Hundreds, num2Tens, num2Units])를 곱했습니다.
  • const [num1, num2] = : 이전의 문제들에서 const [A,B,C] = inputData; 처럼 변수를 선언하는 과정을 포함했습니다.

입출력과 사칙연산 단계는 여기까지입니다.