티스토리 뷰
1. Hello World
Hello World
문제
Hello World!를 출력하시오.
입력
없음
출력
Hello World!를 출력하시오.
예제 입력 1
예제 출력 1
Hello World!
해답
console.log("Hello World!");
웹 콘솔에 메세지를 출력하는 console.log()을 활용하여 풀 수 있습니다.
2. We love Kriii
We love kriii
문제
ACM-ICPC 인터넷 예선, Regional, 그리고 World Finals까지 이미 2회씩 진출해버린 kriii는 미련을 버리지 못하고 왠지 모르게 올해에도 파주 World Finals 준비 캠프에 참여했다.
대회를 뜰 줄 모르는 지박령 kriii를 위해서 격려의 문구를 출력해주자.
입력
본 문제는 입력이 없다.
출력
두 줄에 걸쳐 "강한친구 대한육군"을 한 줄에 한 번씩 출력한다.
예제 입력 1
예제 출력 1
강한친구 대한육군
강한친구 대한육군
해답
for (let i = 0; i <= 1; i++) {
console.log("강한친구 대한육군");
}
console.log()의 개념을 알면 풀 수 있는 문제입니다.
console.log("강한친구 대한육군")
을 두 번 출력하여 문제를 해결할 수 있지만 for문을 활용하여 해결해보았습니다.
3. 고양이
고양이
문제
아래 예제와 같이 고양이를 출력하시오.
입력
없음.
출력
고양이를 출력한다.
예제 입력 1
예제 출력 1
\ /\
) ( ')
( / )
\(__)|
해답
console.log(`\\ /\\
) ( ')
( / )
\\(__)|`);
Template literals 즉 백틱키를 활용하여 출력을 해주는데 특정 문자를 나타내야하므로 이스케이프 시퀀스를 활용하여 코드를 작성합니다.
종류 | 내용 |
---|---|
\n | return |
\' | ' 표시 |
\" | " 표시 |
\\ | \ 표시 |
4. 개
개
문제
아래 예제와 같이 개를 출력하시오.
입력
없음.
출력
개를 출력한다.
예제 입력 1
예제 출력 1
|\_/|
|q p| /}
( 0 )"""\
|"^"` |
||_/=\\__|
해답
console.log(`|\\_/|
|q p| /}
( 0 )\"\"\"\\
|\"^"\` |
||_/=\\\\__|`);
Template literals 즉 백틱키를 활용하여 출력을 해주는데 특정 문자를 나타내야하므로 이스케이프 시퀀스를 활용하여 코드를 작성합니다.
종류 | 내용 |
---|---|
\n | return |
\' | ' 표시 |
\" | " 표시 |
\\ | \ 표시 |
5. A+B
문제
A+B
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A+B를 출력한다.
예제 입력 1
1 2
예제 출력 1
3
해답
const fs = require("fs");
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
const [a, b] = inputData;
console.log(a + b);
풀이
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 31 20 32>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
toString()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString();
console.log(inputData); // 1 2
Buffer 형식으로 출력된 값을 toString()
을 통해 기본값인 "utf8"
형식으로 출력합니다.
split()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ");
console.log(inputData); // [ '1', '2' ]
split()
를 활용하여 매개변수에 공백을 의미하는 " "
를 넣어 배열을 만듭니다.
map()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
console.log(inputData); // [ 1, 2 ]
map()
메서드의 callback 함수를 활용하여 string
형식이었던 배열의 각 값을 number
형식으로 바꿉니다.
배열 구조 분해
const [a, b] = inputData;
console.log(a); // 1
console.log(b); // 2
구조 분해 할당의 배열 구조 분해을 통해 배열 속의 a
, b
에 값을 할당합니다.
console.log(a + b); //3
그 후 a
와 b
의 값을 더하여 최종적으로 출력값이 요구하는대로 나오는 것을 알 수 있습니다.
6. A-B
문제
A-B
문제
두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A-B를 출력한다.
예제 입력 1
3 2
예제 출력 1
1
해답
const fs = require("fs");
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
const [a, b] = inputData;
console.log(a - b);
풀이
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 33 20 32>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
toString()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString();
console.log(inputData); // 3 2
Buffer 형식으로 출력된 값을 toString()
을 통해 기본값인 "utf8"
형식으로 출력합니다.
split()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ");
console.log(inputData); // [ '3', '2' ]
split()
를 활용하여 매개변수에 공백을 의미하는 " "
를 넣어 배열을 만듭니다.
map()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
console.log(inputData); // [ 3, 2 ]
map()
메서드의 callback 함수를 활용하여 string
형식이었던 배열의 각 값을 number
형식으로 바꿉니다.
배열 구조 분해
const [a, b] = inputData;
console.log(a); // 3
console.log(b); // 2
구조 분해 할당의 배열 구조 분해을 통해 배열 속의 a
, b
에 값을 할당합니다.
console.log(a - b); // 1
그 후 a
와 b
의 값을 빼 최종적으로 출력값이 요구하는대로 나오는 것을 알 수 있습니다.
7. AxB
문제
AxB
문제
두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A×B를 출력한다.
예제 입력 1
1 2
예제 출력 1
2
예제 입력 2
3 4
예제 출력 2
12
해답
const fs = require("fs");
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
const [a, b] = inputData;
console.log(a * b);
풀이
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 33 20 34>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
toString()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString();
console.log(inputData); // 3 4
Buffer 형식으로 출력된 값을 toString()
을 통해 기본값인 "utf8"
형식으로 출력합니다.
split()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ");
console.log(inputData); // [ '3', '4' ]
split()
를 활용하여 매개변수에 공백을 의미하는 " "
를 넣어 배열을 만듭니다.
map()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
console.log(inputData); // [ 3, 4 ]
map()
메서드의 callback 함수를 활용하여 string
형식이었던 배열의 각 값을 number
형식으로 바꿉니다.
배열 구조 분해
const [a, b] = inputData;
console.log(a); // 3
console.log(b); // 4
구조 분해 할당의 배열 구조 분해을 통해 배열 속의 a
, b
에 값을 할당합니다.
console.log(a * b); // 12
그 후 a
와 b
의 값을 곱해 최종적으로 출력값이 요구하는대로 나오는 것을 알 수 있습니다.
8. A/B
문제
A/B
문제
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.
예제 입력 1
1 3
예제 출력 1
0.33333333333333333333333333333333
10-9 이하의 오차를 허용한다는 말은 꼭 소수 9번째 자리까지만 출력하라는 뜻이 아니다.
예제 입력 2
4 5
예제 출력 2
0.8
해답
const fs = require("fs");
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
const [a, b] = inputData;
console.log(a / b);
풀이
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 31 20 33>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
toString()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString();
console.log(inputData); // 1 3
Buffer 형식으로 출력된 값을 toString()
을 통해 기본값인 "utf8"
형식으로 출력합니다.
split()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ");
console.log(inputData); // [ '1', '3' ]
split()
를 활용하여 매개변수에 공백을 의미하는 " "
를 넣어 배열을 만듭니다.
map()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
console.log(inputData); // [ 1, 3 ]
map()
메서드의 callback 함수를 활용하여 string
형식이었던 배열의 각 값을 number
형식으로 바꿉니다.
배열 구조 분해
const [a, b] = inputData;
console.log(a); // 1
console.log(b); // 3
구조 분해 할당의 배열 구조 분해을 통해 배열 속의 a
, b
에 값을 할당합니다.
console.log(a / b); // 0.3333333333333333
그 후 a
와 b
의 값을 나누어 최종적으로 출력값이 요구하는대로 나오는 것을 알 수 있습니다.
9. 사칙연산
문제
사칙연산
문제
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
입력
두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)
출력
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.
예제 입력 1
7 3
예제 출력 1
10
4
21
2
1
해답
const fs = require("fs");
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
const [a, b] = inputData;
console.log(`${a + b}
${a - b}
${a * b}
${parseInt(a / b)}
${a % b}`);
풀이
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 37 20 33>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
toString()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString();
console.log(inputData); // 7 3
Buffer 형식으로 출력된 값을 toString()
을 통해 기본값인 "utf8"
형식으로 출력합니다.
split()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ");
console.log(inputData); // [ '7', '3' ]
split()
를 활용하여 매개변수에 공백을 의미하는 " "
를 넣어 배열을 만듭니다.
map()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
console.log(inputData); // [ 7, 3 ]
map()
메서드의 callback 함수를 활용하여 string
형식이었던 배열의 각 값을 number
형식으로 바꿉니다.
배열 구조 분해
const [a, b] = inputData;
console.log(a); // 7
console.log(b); // 3
구조 분해 할당의 배열 구조 분해을 통해 배열 속의 a
, b
에 값을 할당합니다.
Template literals
console.log(`${a + b}
${a - b}
${a * b}
${parseInt(a / b)}
${a % b}`);
// 10
// 4
// 21
// 2
// 1
Template literals의 Multi-line strings와 Expression interpolation(표현식 삽입법)으로 문제에서 요구한 사칙연산을 간편하게 표현합니다.
parseInt()
a/b
에는 parseInt()
함수를 사용하여 실수인 값을 정수로 반환합니다.
최종적으로 출력값이 요구하는대로 나오는 것을 알 수 있습니다.
10. ??!
문제
??!
문제
준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.
입력
첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다.
출력
첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다.
예제 입력 1
joonas
예제 출력 1
joonas??!
예제 입력 2
baekjoon
예제 출력 2
baekjoon??!
해답
const fs = require("fs");
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.trim();
console.log(`${inputData}??!`);
풀이
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 62 61 65 6b 6a 6f 6f 6e>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
toString()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString();
console.log(inputData); // baekjoon
Buffer 형식으로 출력된 값을 toString()
을 통해 기본값인 "utf8"
형식으로 출력합니다.
trim()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.trim();
console.log(inputData); // baekjoon
trim()
메서드를 통해 공백 존재 유무를 고려하여 문자열 양 끝 공백을 제거하도록 합니다.
Template literals
console.log(`${inputData}??!`); // baekjoon??!
그 후 Template literals의 Expression interpolation(표현식 삽입법)으로 inputData
값에 ??!
를 이어 적어 출력합니다.
11. 1998년생인 내가 태국에서는 2541년생?!
문제
1998년생인 내가 태국에서는 2541년생?!
문제
ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.
불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.
입력
서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)
출력
불기 연도를 서기 연도로 변환한 결과를 출력한다.
예제 입력 1
2541
예제 출력 1
1998
해답
const fs = require("fs");
const inputData = +fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData - 543);
풀이
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 32 35 34 31>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
+
const inputData = +fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // 2541
Buffer 형식으로 출력된 값을 inputData
로 정의하려는 식 앞에 +
를 붙여 실수 형식으로 변환하여 불멸기원을 구합니다.
console.log(inputData - 543); // 1998
그리고 543
을 뺄셈해 서기 연도를 출력합니다.
12. 나머지
문제
나머지
문제
(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)
출력
첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.
예제 입력 1
5 8 4
예제 출력 1
1
1
0
0
해답
const fs = require("fs");
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
const [A, B, C] = inputData;
console.log(`${(A + B) % C}
${((A % C) + (B % C)) % C}
${(A * B) % C}
${((A % C) * (B % C)) % C}`);
풀이
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 35 20 38 20 34>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
toString()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString();
console.log(inputData); // 5 8 4
Buffer 형식으로 출력된 값을 toString()
을 통해 기본값인 "utf8"
형식으로 출력합니다.
split()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ");
console.log(inputData); // [ '5', '8', '4' ]
split()
를 활용하여 매개변수에 공백을 의미하는 " "
를 넣어 배열을 만듭니다.
map()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split(" ")
.map((value) => +value);
console.log(inputData); // [ 5, 8, 4 ]
map()
메서드의 callback 함수를 활용하여 string
형식이었던 배열의 각 값을 number
형식으로 바꿉니다.
배열 구조 분해
const [A, B, C] = inputData;
console.log(A); // 5
console.log(B); // 8
console.log(C); // 4
구조 분해 할당의 배열 구조 분해을 통해 배열 속의 A
, B
, C
에 값을 할당합니다.
Template literals
console.log(`${(A + B) % C}
${((A % C) + (B % C)) % C}
${(A * B) % C}
${((A % C) * (B % C)) % C}`);
// 1
// 1
// 0
// 0
Template literals의 Multi-line strings와 Expression interpolation(표현식 삽입법)을 활용합니다.
최종적으로 출력값이 요구하는대로 나오는 것을 알 수 있습니다.
13. 곱셈
문제
곱셈
문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
예제 입력 1
472
385
예제 출력 1
2360
3776
1416
181720
해답
const fs = require("fs");
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split("\n")
.map((value) => +value);
const [a, b] = inputData;
const [hundredsB, tensB, unitsB] = String(b)
.split("")
.map((value) => +value);
console.log(`${a * unitsB}
${a * tensB}
${a * hundredsB}
${a * b}`);
풀이
inputData
readFileSync()
const fs = require("fs");
const inputData = fs.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
);
console.log(inputData); // <Buffer 34 37 32 0a 33 38 35>
백준에서 추천하는 방식은 node.js에서 fs 모듈의 readFileSync()
를 이용하는 것입니다.
process.platform
백준의 파일 경로는 "/dev/stdin"
입니다.
process.platform
이 "linux"
인 경우 경로를 "/dev/stdin"
으로 향하게 하고 그것이 아니면 사용자가 지정한 파일을 향하게 합니다.
toString()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString();
console.log(inputData);
// 472
// 385
Buffer 형식으로 출력된 값을 toString()
을 통해 기본값인 "utf8"
형식으로 출력합니다.
split()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split("\n");
console.log(inputData); // [ '472', '385' ]
split()
를 활용하여 매개변수에 줄바꿈을 의미하는 "\n"
를 넣어 배열을 만듭니다.
map()
const inputData = fs
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : "../../../../index.txt"
)
.toString()
.split("\n")
.map((value) => +value);
console.log(inputData); // [ 472, 385 ]
map()
메서드의 callback 함수를 활용하여 string
형식이었던 배열의 각 값을 number
형식으로 바꿉니다.
배열 구조 분해
const [a, b] = inputData;
console.log(a); // 472
console.log(b); // 385
구조 분해 할당의 배열 구조 분해을 통해 배열 속의 a
, b
에 값을 할당합니다.
hundredsB, tensB, unitsB
(3), (4), (5)의 값을 구하기 위해서는 b
값의 백의 자리 수, 십의 자리 수, 일의 자리 수를 구하여 a
값에 각각 곱해줘야 합니다.
String()
const B = String(b);
console.log(B); // 385
number
형식인 b
값을 String()
을 통해 문자열로 변환해줍니다.
split()
const B = String(b).split("");
console.log(B); // [ '3', '8', '5' ]
그 후 split()
메서드를 통해 매개변수 ""
를 통하여 각 자리 수를 나라태는 배열(백의 자리, 십의 자리, 일의 자리)를 생성합니다.
map()
const B = String(b)
.split("")
.map((value) => +value);
console.log(B); // [ 3, 8, 5 ]
map()
메서드의 callback 함수를 활용하여 string
형식이었던 배열의 각 값을 number
형식으로 바꿔 연산이 가능하도록 합니다.
배열 구조 분해
const [hundredsOfB, tensOfB, unitsOfB] = String(b)
.split("")
.map((value) => +value);
console.log(hundredsOfB); // 3
console.log(tensOfB); // 8
console.log(unitsOfB); // 5
구조 분해 할당의 배열 구조 분해을 통해 b
로부터 각 자리 수를 의미하는 숫자를 배열 속의 hundredsB
, tensB
, unitsB
에 값을 할당합니다.
Template literals
console.log(`${a * unitsOfB}
${a * tensOfB}
${a * hundredsOfB}
${a * b}`);
// 2360
// 3776
// 1416
// 181720
Template literals의 Multi-line strings와 Expression interpolation(표현식 삽입법)으로 문제에서 요구한 사칙연산을 간편하게 표현합니다.
문제에서 요구하는 값이 정상적으로 출력되는 것을 볼 수 있습니다.
'Nodejs' 카테고리의 다른 글
[Nodejs][백준] 단계별로 풀어보기 - 5. 함수 (0) | 2022.09.12 |
---|---|
[Nodejs][백준] 단계별로 풀어보기 - 4. 1차원 배열 (0) | 2022.07.27 |
[Nodejs][백준] 단계별로 풀어보기 - 3. 반복문 (0) | 2022.07.22 |
[Nodejs][백준] 단계별로 풀어보기 - 2. 조건문 (0) | 2022.07.07 |
[Nodejs] nvm으로 Nodejs 버전 관리하기 (0) | 2021.09.29 |