반응형
☁️ 문제 설명
문자열 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 |
---|
댓글