개념
입출력
- 프로그래머스에서 문자열 출력 문제를 풀 때 기본적으로 제공하는 코드를 분석해보자.
// CommonJS 방식으로 readline 모듈을 불러옴
// readline은 데이터를 한 번에 한 줄씩 읽을 수 있음.
const readline = require('readline');
// interface 객체 만들기
// console에서 표준 입출력 처리를 할 수 있음.
const rl = readline.createInterface({
input: process.stdin, // standard input
output: process.stdout // standard output
});
// input 변수 초기화
let input = [];
rl.on('line', function (line) {
// 입력받은 값을 처리하는 코드
input = [line];
}).on('close',function(){
// 입력이 끝나고 실행되는 코드
// 이 부분에 console.log를 찍어주면 출력이 된다.
str = input[0];
});
문자열 반복 출력
문자열.repeat(반복 횟수)
- python의
문자열*숫자
와 같은 결과를 보인다.
대소문자 체크
- JavaScript에는 대소문자 체크 함수가 없다...!
- 따라서 대소문자 변환을 한 후, 기존 문자와 동일한지 체크하는 방식으로 대소문자를 체크해주어야 한다.
대소문자 변환
문자열.toUpperCase();
문자열.toLowerCase();
문자열 포맷팅
console.log('name: %s', '하츄핑');
const a = 1;
const b = 2;
console.log(`${a} + ${b} = ${a + b}`;
- 백틱(`)을 사용해서 문자열 포맷팅을 할 수 있음
join
const arr = ['바람', '비', '물'];
console.log(arr.join());
// 바람,비,물
console.log(arr.join(''));
// 바람비물
console.log(arr.join('-'));
// 바람-비-물
문제 풀이
프로그래머스 level 0 - 문자열 출력하기
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)
});
프로그래머스 level 0 - a와 b 출력하기
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
console.log('a = ' + Number(input[0]));
console.log('b = ' + Number(input[1]))
});
- 굳이 Number 형 변환을 해주지 않아도 된다.
- 또한,
const [a, b] = line.split(' ')
이렇게 a, b값을 받을 수도 있다. (이때 a와 b를 scope 밖에서 미리 선언해야 한다.)
프로그래머스 level 0 - 문자열 반복해서 출력하기
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = []
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
var answer = ''
for (i = 0; i < Number(input[1]); i++){
answer += input[0]
}
console.log(answer);
});
- 처음에는 repeat 함수를 알지 못해 이렇게 작성했었다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
const str = input[0];
const n = Number(input[1]);
console.log(str.repeat(n));
});
- repeat 함수를 적용하면 반복문을 쓸 필요가 없다.
프로그래머스 level 0 - 대소문자 바꿔서 출력하기
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];
var answer = '';
for (i= 0 ; i < str.length; i++){
if (str[i] == str[i].toUpperCase()){
answer += str[i].toLowerCase();
} else {
answer += str[i].toUpperCase();
}
}
console.log(answer);
});
프로그래머스 level 0 - 특수 문자 출력하기
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('close', function () {
console.log('!@#$%^&*(\\\'"<>?:;');
});
- js의 이스케이프 코드는 python과 동일하다~
프로그래머스 level 0 - 덧셈식 출력하기
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
console.log( String(input[0]), '+', String(input[1]), '=',
String(Number(input[0]) + Number(input[1])));
});
rl.on('line', function (line) {
[a, b] = line.split(' ').map(Number);
}).on('close', function () {
console.log(`${a} + ${b} = ${a + b}`);
});
- map으로 Number 함수를 일괄 적용할 수 있다
- 백틱을 사용해서 문자열 포맷팅을 사용하자
프로그래머스 level 0 - 문자열 붙여서 출력하기
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
str1 = input[0];
str2 = input[1];
console.log(str1+str2);
});
- join 함수를 사용하면 input 개수에 관계없이 모두 붙여 쓸 수 있다.
프로그래머스 level 0 - 홀짝 구분하기
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
n = Number(input[0]);
if (n%2 == 0){
console.log(`${n} is even`);
} else {
console.log(`${n} is odd`);
}
});