반응형
    
    
    
  ☁️ 문제 설명
문자열 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)로 출력.
 
📊 특징:
- 여러 줄 입력을 하나의 문자열로 합침 → 이 부분이 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)이 없으므로 출력 결과는 없음.
 
📊 특징:
- 입력한 값을 즉시 출력하면서도 마지막 입력만 저장.
 - on('close') 부분에서 출력하지 않아서 불완전한 코드임.
 - 입력 즉시 출력하지만 입력 종료 후에는 출력이 없음 → 불완전한 코드, 개선이 필요함.
 
⭐️추천
코테나 알고리즘 문제 풀 때는 3번 솔루션이 가장 적합!
간단한 출력 문제면 1번 솔루션!
반응형
    
    
    
  'IT > 프로그래머스' 카테고리의 다른 글
| [JavaScript/자바스크립트] 프로그래머스 Level.0 - a와 b 출력하기 (0) | 2025.02.14 | 
|---|
										
									
댓글