궁금한게 많은 코린이의 Developer 노트
[프로그래머스] a와 b 출력하기 본문
내가 푼 문제풀이
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
const a;
const b;
rl.on('line', function (line) {
input = line.split(' ');
a = input[0];
b = input[1];
console.log('a = ' + a +'\n'+ 'b = ' + b);
})
문제풀이
먼저 a와 b 값을 담을 변수를 선언해준다.
split( ' ' ) 메서드를 사용하여 글자별로 잘라준다.
( split( '' ) 메서드를 사용하면 단어 별로 잘라줌 -> 불필요한 space(공백)까지 잘라주기 때문에 해당 메서드 사용 안함. )
a 와 b 변수에 input 배열의 값을 지정해준다.
console.log에 \n으로 줄바꿈을 해주어 값을 출력한다.
문제를 위와 같이 풀었으나,
내가 생각하는 이상적인 풀이는 a와 b의 틀을 만들고
주어진 숫자를 뿌려 넣어 값이 완성되는 것을 상상했었어서
for Each를 넣어 문제를 풀어보았다.
실패한 문제풀이 -> for Each 사용
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = []; //4,5
rl.on('line', function (line) {
input = line.split(' ');
input.forEach(e => {
//input배열을 순서대로 출력 //4,5
console.log('a = ' + e[0]);
console.log('b = ' + e[1]);
})
})
주어진 입력 값(input 값)은 2개이다.
console.log 안의 배열을 2번 반복하게 된다 -> a,b가 각각 2번씩 반복되므로 값이 될 수 없음을 알게 되었다.
다른 사람의 문제풀이1
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
}).on('line', function (line) {
const [a, b] = line.split(' ')
console.log('a =', a)
console.log('b =', b)
})
문제풀이
const [a, b] = line.split(' ')
입력된 값인 line을 '공백'을 기준으로 분리하여 배열로 만든 후,
해당 배열의 첫 번째 요소를 a 변수에, 두 번째 요소를 b 변수에 할당한다.
console.log를 2번 선언하여 출력한다.
정말 깔끔한 풀이/..
몰랐던 것
const [a, b] = line.split(' ') : 변수 한번에 선언하는 방법.
(나는 이걸 몰라서 const a,b 따로따로 담음..)
console.log를 2번 출력하면 줄넘김 된 것 처럼 출력이 가능하다.
다른 사람의 문제풀이2 $ , 리터럴 문자 사용
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 = ${input[0]}\nb = ${input[1]}`)
});
다른 사람의 문제풀이3 for of 사용
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
let i = 0;
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
for(val of input){
console.log( String.fromCharCode(97 + i) + " = " + Number(val));
i++;
}
});
내가 생각했던 것을 구현한 풀이여서 신기해서 가져와봤다.
문제풀이
숫자를 반복문으로 순서대로 출력한 것 처럼
알파벳도 순서대로(a 다음 b) 출력할 수 있도록 만들어주었다.
반복문을 사용해서 콘솔('알파벳 1개' + = + 숫자)을 2번 출력해주었다.
어떻게 순서대로 알파벳을 출력할 수 있을까?
아스키 코드를 사용하여 순서대로 출력할 수 있도록 하였다.
- fromCharCode(97+ i): 아스키(ASCII) 코드에서 97부터 시작하는 알파벳 'a'을 반환한다.
- i는 반복 횟수를 나타내는 변수이다. (97 + i(0) = 97( a출력 )/ 97+i(1) = 98( b출력 ))
(아스키 코드는 97부터 알파벳 a 부터 나오기 때문에 97부터 반복문이 시작된다.)
- Number(val) 값을 반복해서 순서대로 배열을 '숫자'로 출력한다.
※ String.fromCharCode : 자바스크립트 상에서 아스키코드를 사용하려면 문자열로 변환해야 하기 때문에 String.을 붙여준다.
'TIL' 카테고리의 다른 글
[TIL] 프로그래머스 덧셈식 출력하기 (6) | 2024.01.29 |
---|---|
[TIL] 프로그래머스 문자열 반복 (0) | 2024.01.25 |
[프로그래머스] 문자열 출력하기 (1) | 2024.01.06 |
[Next.js] layout.js 의 작동원리 (2) | 2023.12.30 |
[TIL] SEO의 개념과 효율적으로 SEO하는 방법 (0) | 2023.12.29 |