안녕하세요
[node.js] 백준 입출력과 사칙연산 단계 (자바스크립트) 2557 ~ 본문
클론코딩을 하면서 부족한 자바스크립트 문법은 백준을 통해서 공부합시다.
초보입니다. 코드 설명은 "참고만" 해주세요.
https://www.acmicpc.net/step/1
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; 처럼 변수를 선언하는 과정을 포함했습니다.
입출력과 사칙연산 단계는 여기까지입니다.
'백준 자바스크립트' 카테고리의 다른 글
[node.js] 문자열 단계 (자바스크립트) 11654 ~ (0) | 2022.05.10 |
---|---|
[node.js] 함수 단계 (자바스크립트) 4673 ~ (0) | 2022.05.08 |
[node.js] 백준 1차원 배열 단계 (자바스크립트) 10818 ~ (0) | 2022.05.05 |
[node.js] 백준 반복문 단계 (자바스크립트) 2739 ~ (0) | 2022.05.04 |
[node.js] 백준 조건문 단계 (자바스크립트) 1330 ~ (0) | 2022.05.03 |