ABOUT ME

작은 디테일에 집착하는 개발자

Today
-
Yesterday
-
Total
-
  • [백준 알고리즘/JavaScript] 1000번 A + B (Feat. 입력받기)
    IT Study/백준 알고리즘 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);
Designed by Tistory.