IT Study/백준 알고리즘

[백준 알고리즘/JavaScript] 1000번 A + B (Feat. 입력받기)

three kim 2023. 12. 14. 13:01
728x90

 

처음으로 JavaScript로 백준을 풀이하기에 앞서, 입력받는 것부터 확인해 보도록 하죠.

 

<fs Module>

 

1. 하나의 값 입력받기

// ex) 2 (하나의 값을 입력받을 때)

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

 

2. 여러 값 입력받기

2-1. 한 줄에 공백으로 구분된 여러 값을 입력받기

// ex) 10 21 3 (한 줄에 공백으로 구분된 여러 값을 입력받을 때)

const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ");

 

2-2. 여러 줄에 줄 바꿈으로 구분된 여러 값을 입력받기

// ex) 10 
//     21
//     3
//    (여러 줄에 줄바꿈으로 구분된 여러 값을 입력받을 때)

const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

 

2-3. 첫 줄에는 하나의 입력 값을, 두 번째 줄에는 공백으로 구분된 여러 값을 입력받기

// ex) 3
//     10 231 54
//     (첫 줄에는 하나의 입력 값을, 두 번째 줄에는 공백으로 구분된 여러 값을 입력받을 때)

const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
const n = Number(input[0]);
const inputArr = input[1].trim().split(" ");

 

2-4. 첫 줄에는 하나의 입력 값을, 두 번째 줄부터는 줄 바꿈으로 구분된 여러 값을 입력받기

// ex) 3
//     10
//     231
//     54
//     (첫 줄에는 하나의 입력 값을, 두 번째 줄부터는 줄바꿈으로 구분된 여러 값을 입력받을 때)

const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
const n = Number(input[0]);
const inputArr = input.slice(1).map(line -> Number(line.trim()));

 

<readline Module>

 

1. 기본

// 모듈 가져오기
const readline = require("readline");

// 모듈을 통해 입출력 인터페이스 객체 생성
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
1) rl.question을 사용한 코드
- 사용자에게 메시지를 출력하고, 사용자의 입력을 기다린다.
- 한 번에 하나의 입력을 기다릴 때 유용하다.

2) rl.on("line")을 사용한 코드
- rl.on("line")을 사용하여 사용자 입력을 비동기적으로 받는다.
- rl.on("close")는 입력을 종료한 후 실행할 코드를 적는다.

- rl.close()는 입력을 종료하는 명시적인 호출.
- rl.on("line")은 입력을 받을 때마다 실행되며, 입력이 종료될 때까지(종료 조건 만족할 때까지) 계속 실행된다.

- rl.close() 호출 이전에 다수의 입력을 받을 수 있다.
- 여러 줄의 입력을 받을 때 유용하다.

 

2. 원소 하나 입력받기

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.on("line", function (line) {
    const input = line;
    console.log("입력한 원소 : ", input); 
    rl.close();
});

// > 1
// 입력한 원소 :  1

 

3. 한 줄에 여러 원소를 띄어쓰기 기준으로 입력받기

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.on("line", function (line) {
    const inputArr = line.split(" ");
    console.log("입력한 원소 배열 : ", inputArr);
    rl.close();
});

rl.on("close", () => {
    process.exit();
})

// > 1 2 3
// 입력한 원소 배열 :  [ '1', '2', '3' ]

 

4. 여러 줄에 여러 원소를 줄바꿈 기준으로 입력받기

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

const inputLines = [];

rl.on("line", function (line) {
    inputLines.push(line);

    // exit 입력 시, 종료 함수 호출
    if (line === "exit") {
        rl.close();
    }
});

rl.on("close", function () {
    console.log("입력한 원소 배열 : ", inputLines)

    console.log("입력한 개별 원소 : ");
    for (const line of inputLines) {
        const lineArr = line.split(" ");
        console.log(lineArr);
    }

    process.exit();
});

// > 1 23 4
// > 1 5 6
// > 3 4
// > exit

// 입력한 원소 배열 :  [ '1 23 4', '1 5 6', '3 4', 'exit' ]
// 입력한 개별 원소 : 
// [ '1', '23', '4' ]
// [ '1', '5', '6' ]
// [ '3', '4' ]
// [ 'exit' ]

 

문제에 대한 결과 코드 (fs로 풀이)

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
const A = Number(input[0]);
const B = Number(input[1]);
console.log(A + B);