궁금한게 많은 코린이의 Developer 노트

[프로그래머스] 문자열 출력하기 본문

TIL

[프로그래머스] 문자열 출력하기

lemonarr🍋 2024. 1. 6. 18:42

 

 

내가 푼 문제풀이

 

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

let input = [];

rl.on('line', (line) => {

input = [line];
rl.close();

}).on('close',function(){

str = input[0];
console.log(str);
process.exit();

});

 

내가 푼 방법

line 입력값을 input에 배열로서 받아오고 (rl.close()를 사용하여 입력을 한번만 하도록 막아주었다.)

str에 input의 입력된 값 중 첫번째 값을 변수 str에 할당하였고,

console.log로 str 값을 출력하였다.

(다른 사람 풀이도 참고해보니 rl.close 와 process.exit()는 작성하지 않아도 작동이 충분히 가능한 것 같다.)

 

str = input[0];
입력된 값 중 첫 번째 값을 변수 str에 할당하는 코드를 작성하여 문제를 풀이하였다.

 

 

 

모르는 용어 정리

 

readline: 한번에 한 줄씩 데이터를 읽기 위한 인터페이스를 제공하는 모듈이다. 콘솔을 통해 값을 받아온다.

input: process.stdin

readline 모듈을 이용해 입출력을 받는 interface 객체를 생성한다.

input: process.stdin

:fs 모듈을 사용하여 표준 입력 파일을 동기적으로 불러오는 방법이다.

rl.on('line', (line) => { ~~

: 한 줄씩 입력받은 후 실행할 코드. 입력된 값은 line에 저장된다.

rl.close();

이것을 써주지 않으면 입력이 무한히 받는다. 입력이 끝났다는 뜻.'close': 더 이상 입력되는 값이 없을 때 실행되는 이벤트

process.exit(); : 프로세스 종료

 

입력한 값을 input 변수에 배열로 받아온다.

 

 

 

 

다른 사람의 풀이방법 1

 

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

let input = [];

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

 

풀이방법

입력 값 line을 배열로 받아와서 input에 배열로서 넣어준다음, console.log의 출력방법을 사용해서

input안에 있는 쪼개진 문자열을 join으로 이어 붙여서 출력한 케이스로 보여진다.

 

몰랐던 개념

 

input.join(' ')

 

검색해보니 배열.join( ) 형태로 찾을 수 있었다.

배열.join( )  -> 배열의 각 원소를 이어붙여 문자열로 만든다. 

 

여기에 상대적인 개념 또한 알 수 있었는데

문자열.split() : 문자열을 나누어 배열로 만든다.

 

문자열.split()은 해체하고 배열.join()은 이어붙이는 개념이다.

 

 

 

 

다른 사람의 풀이방법 2  -> 제일 깔끔했던 문제풀이

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

let input = [];

rl.on('line', console.log);

 

풀이방법

여기에서는

그냥 받아온 line 값을 console.log로 출력해버렸다.

 

 

제일 코드가 깔끔했던 문제풀이였다.

rl.on() 개념을 이해하고 풀지 않았나 싶다. 

아직 나는 코린이라 좋은 코드인지는 확신할 수 없지만 클린 코드에 가까운 문제풀이지 않았나 싶다.

 

 

 

다른 사람의 풀이방법 3

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

let input;

rl.on('line', (line) => {
  input = line;
}).on('close', () => {
  console.log(input);
});

 

풀이방법

input을 단순 변수로 할당하여 (위에서는 배열로 할당함.)

입력값 line에 넣어주고 출력한 방법도 있다.

 

문제는 문자열 출력하기여서 위에 풀이들도 배열로 값을 받아온 경우가 많은데

굳이 배열로 받아오지 않고 풀이하였다.

 

 

과연 배열로 변수를 할당하면 문제가 풀어질까?

input 변수를 배열로 바꾸어서 풀어보았다.

let input; -> let input = [ ]; 

 

 

 

아주 잘 실행된다.

굳이 배열로 문제를 풀지 않아도 풀 수 있는 문제였다. 

 

 

 

다른 사람의 풀이방법 4

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

let input = [];

rl.on('line', (line) => {
    console.log(line);
    rl.close();
});

rl.on('close', () => {
    process.exit();
});

 

풀이 방법

그냥 입력 값을 console.log( line ); 으로 출력해서 풀어버린 케이스..

 

 

 

 

결론적으로 line 값을 받아와서 출력만하면 되는 쉬운 문제였다.

나는 구글 검색하고 문제 푸는데 한시간 정도 걸렸다..다음엔 더 빨리 풀길 :)