본문 바로가기

JS 코테

<Javascript-CT> 기초 DAY 1 입출력 관련 - readline , 한줄로 출력하기 - process.stdout.write()

 

 

 

 

프로그래머스 문제

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

    제한사항
    1 ≤ str의 길이 ≤ 1,000,000
    str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.
    
    
2번 문제 
	정수 a와 b가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요.
    제한사항
	-100,000 ≤ a, b ≤ 100,000
    
   입출력 예
	입력 #1
	4 5
    
    출력 #1
    a = 4
    b = 5
    
 3번 문제
 
 4번 문제
    영어 알파벳으로 이루어진 문자열 str이 주어집니다. 
    각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.
    
    입출력 예
    입력 #1
    aBcDeFg
    출력 #1
    AbCdEfG

 

 

🕹️ 이 문제를 풀기 위해 알아야 할것 - readline 

그동안 사용자 입력 받는 방법으로 prompt, confirm, alert를 사용해왔다. 그야... 브라우저에서 확인해왔으니까...

이 친구들은 브라우저에서 제공하는 내장함수이다.

그런데 코테를 풀어보면서 다 틀리다고 하길래ㅋㅋㅋ 찾아보니 node.js 환경에서 사용자 입력을 받을때 사용하는 내장모듈이 있다더라

코테를 볼때 돌리는 환경이 node.js이니까... 그래... 이게 맞지.....

 

기본적인 틀은 이렇다.

//인터페이스 생성하기
const readline = require("readline");

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

// 입출력 처리
rl.on("line", (line) => {
  	/*입력값 처리 코드*/
	rl.close(); // 인터페이스를 종료해 무한입력 방지
});

rl.on("close", () => {
  	/*입력 이후 실행 코드*/
	process.exit(); // 프로세스 종료
});

"line" : 입력받은 값을 한줄씩 읽어 문자열 타입으로 전달하는 이벤트

"close" :  더이상 입력 값이 없을 경우에 해당하는 이벤트

 

 

 

<내 답안>

1번 문제

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

let input;

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

 

2번 문제

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

let input = [];

rl.on('line', (line) => {
    input = line.split(' ').map((item)=> parseInt(item));
     rl.close()
})

rl.on('close', () =>{
    console.log(`a = ${input[0]}`)
    console.log(`b = ${input[1]}`)
});

 

3번문제

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

let input = [];
let str;
let n
let i = 0

rl.on('line', (line) => {
    input = line.split(' ')
    str = input[0]
    n = input[1]
    rl.close()
})
    
rl.on('close', () =>{
    while ( i < n){
        process.stdout.write(str)
        i++
    }
});

 

 

4번 문제

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

let input = [];
let len;
let i = 0;

function isUpper(val) {
  if (val === val.toUpperCase()) {
    val = val.toLowerCase();
    return val;
  } else if (val === val.toLowerCase()) {
    val = val.toUpperCase();
    return val;
  }
}

rl.on("line", (line) => {
  input = line.split("");
  len = input.length;
  rl.close();
});

rl.on("close", () => {
  while (i < len) {
    const temp = isUpper(input[i]);
    process.stdout.write(temp);
    i++;
  }
});
728x90

'JS 코테' 카테고리의 다른 글

<Javascript-CT> 기초 DAY 6  (0) 2025.04.24
<Javascript-CT> 기초 DAY 5  (0) 2025.04.24
<Javascript-CT> 기초 DAY 4  (0) 2025.04.24
<Javascript-CT> 기초 DAY 3 연산  (0) 2025.04.24
<Javascript-CT> 기초 DAY 2 - 출력, 연산  (0) 2025.04.24