본문 바로가기
IT/프로그래머스

[JavaScript/자바스크립트] 프로그래머스 Level.0 - 문자열 출력하기

by hatnim 2025. 2. 14.
반응형

☁️ 문제 설명

문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.

https://school.programmers.co.kr/learn/courses/30/lessons/181952

☁️ 제한사항

  • 1 ≤ str의 길이 ≤ 1,000,000
  • str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.

☁️ 입출력 예

입력 #1

HelloWorld!

출력 #1

HelloWorld!

☁️ solution.js 1번

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
}).on('line', console.log)

설명:

1. readline 모듈 불러오기

  • readline은 Node.js에서 표준 입력/출력을 처리할 수 있는 모듈
  • require('readline') 모듈을 불러옴.

2. 입력 인터페이스 생성

  • readline.createInterface를 통해 입력과 출력을 설정함
  • input: process.stdin: 사용자 입력을 받음
  • output: process.stdout: 결과를 콘솔에 출력함

3. 입력 이벤트 처리

  • .on('line', console.log) → 한 줄의 입력이 들어올 때마다 자동으로 console.log로 출력한다는 뜻
  • 즉, 입력한 값을 바로 출력하는 코드.

📊 특징:

  • 간단하고 직관적: 한 줄 입력받고 바로 출력하는 용도에 적합.
  • 단점: 여러 줄 입력을 처리하거나 입력을 가공하기 어려움.

☁️ solution.js 2번

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

let input = [];

rl.on('line', function (line) {
    input = [line];
}).on('close',function(){
    str = input[0];
    console.log(str)
});

설명:

1. readline 모듈 불러오기 및 인터페이스 생성

  • 1번과 같은 방식으로 입력/출력 인터페이스를 만듦.
  • require('readline') 모듈을 불러옴.

2. 입력받기

  • rl.on('line', function(line) {...}): 한 줄 입력이 들어오면 line에 저장함.
  • 여기서 input = [line];은 입력된 내용을 배열에 저장하는 과정임.

3. 입력 종료 처리 ('close' 이벤트)

  • 입력을 마친 후(보통 Ctrl + D 또는 EOF 입력 시) on('close', ...) 이벤트가 발생함.
  • 이때 input[0]을 가져와 console.log로 출력함.

📊 특징:

  • 여러 줄 입력 처리 가능: input.push(line)으로 수정하면 여러 줄 입력을 저장할 수 있음.
  • 입력 가공 가능: 입력을 받은 후 추가적인 처리가 가능함.
  • 단점: 입력을 받을 때마다 기존 값을 덮어쓰기 때문에 마지막 입력만 저장됨.

☁️ solution.js 3번

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

let input = [];

rl.on('line', function (line) {
    input.push(line);
}).on('close',function(){
    const str = input.join(' ');
    console.log(str);
});

설명:

1. 입력 처리 ('line' 이벤트)

  • input.push(line)을 사용해서 입력한 줄을 배열에 계속 추가하고 있음.
  • 즉, 여러 줄 입력을 모두 저장 가능.

2. 입력 종료 처리 ('close' 이벤트)

  • Ctrl + D를 눌러 입력을 종료하면 on('close', ...)가 실행됨.
  • input.join(' '): 배열의 모든 요소를 공백(' ')으로 이어붙여서 하나의 문자열로 만듦.
  • 결과를 console.log(str)로 출력.
  1.  

📊 특징:

  • 여러 줄 입력을 하나의 문자열로 합침 → 이 부분이 2번 솔루션과 다름.
  • 여러 줄 입력을 받아서 공백으로 연결한 후 출력 → 문자열 결합 문제에 적합함.

☁️ solution.js 4번

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

let input = [];

rl.on('line', function (line) {
    console.log(line);
    input = [line];
}).on('close',function(){
    str = input[0];
});

✅ 설명:

1. 입력 처리 ('line' 이벤트)

  • console.log(line)을 통해 입력된 줄을 즉시 출력함.
  • input = [line]은 매번 입력될 때마다 배열을 새로 덮어쓰는 방식임
    (즉, 이전 입력은 사라지고 마지막 입력만 저장됨.)

2. 입력 종료 처리 ('close' 이벤트)

  • 입력이 끝나면 input[0]을 str에 저장하지만, 출력이 없음.
  • console.log(str)이 없으므로 출력 결과는 없음.
  1.  

📊 특징:

  • 입력한 값을 즉시 출력하면서도 마지막 입력만 저장.
  • on('close') 부분에서 출력하지 않아서 불완전한 코드임.
  • 입력 즉시 출력하지만 입력 종료 후에는 출력이 없음 → 불완전한 코드, 개선이 필요함.

⭐️추천

코테나 알고리즘 문제 풀 때는 3번 솔루션이 가장 적합!

간단한 출력 문제면 1번 솔루션!

반응형

댓글