Node.js 백준 알고리즘 3

김승우·2021년 5월 10일
0

1. 11021 A+B-7

const readline = require("readline");

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

let input = [],
    i = 1,
    result = "";

rl.on("line", function (line) {
    input.push(line);
}).on("close", function () {
    const count = Number(input[0]);

    for (i; i <= count; i++) {
        const sum = input[i].split(" ").reduce(function (acc, cur) {
            return Number(acc) + Number(cur);
        }, 0);

        result += `Case #${i}: ${sum}\n`;
    }

    console.log(result);
    process.exit();
});

2. 11022 A+B-8

const readline = require("readline");

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

let input = [],
    i = 1,
    result = "";
function createText(arr) {
    let _result = "";
    let _sum = 0;
    const arrayLength = arr.length;

    for (let j = 0; j < arrayLength; j++) {
        if (j !== arrayLength - 1) {
            _result += `${arr[j]} + `;
        } else {
            _result += `${arr[j]}`;
        }

        _sum += Number(arr[j]);
    }

    return `${_result} = ${_sum}\n`;
}

rl.on("line", function (line) {
    input.push(line);
}).on("close", function () {
    const count = parseInt(input[0]);

    for (i; i <= count; i++) {
        result += `Case #${i}: ${createText(input[i].split(" "))}`;
    }

    console.log(result);

    process.exit();
});

2438 별 찍기-1

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

function solution(loopCount) {
    let result = "";
    let i = 1;

    for (i; i <= loopCount; i++) {
        let j = 0;
        let starString = "";

        for (j; j < i; j++) {
            starString += "*";
        }

        result += starString + "\n";
    }

    console.log(result);
}

solution(input);

이중 포문이 중요 포인트!

2439 별 찍기-2

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

function solution(loopCount) {
    let result = "",
        i = 0;

    for (i; i < loopCount; i++) {
        // 1.
        let j = loopCount - i - 1,
            // 2.
            k = i + 1,
            starString = "";

        for (j; j > 0; j--) {
            starString += " ";
        }

        for (k; k > 0; k--) {
            starString += "*";
        }

        result += starString + "\n";
    }

    console.log(result);
}

solution(input);
  1. j는 공백의 갯수, input이 5로 입력되었을 때, 1행에서 출력되어야할 공백의 갯수는 4, 별의 갯수는 1이다.
    따라서, j의 값은 input(반복할 행의 갯수) - i(현재 행) - 1이 된다. 이 j의 값이 0보다 클 동안 반복해서 공백을 starString 변수에 더해준다.
  2. k는 별의 갯수, input이 5로 입력되었을 때, 5행에서 출력되어야할 공백의 갯수는 0, 별의 갯수는 5이다.
    따라서, k의 값은 i(현재 행) + 1이 된다. 이 k의 값이 0보다 클 동안 반복해서 '*'을 starString변수에 더해준다.
profile
사람들에게 좋은 경험을 선사하고 싶은 주니어 프론트엔드 개발자

0개의 댓글