오늘도 자바스크립트 코딩테스트 문제를 풀어보았다.
이.. 이게 뭐여 했던 어제보다는 덜 당황하며 찬찬히 문제를 보았다.
프로그래머스 0단계 자바스크립트 a와 b 출력하기
▶ 🗒️문제
정수 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(Number(input[0]) + Number(input[1]));
});
제한사항
-100,000 ≤ a, b ≤ 100,000
입출력 예
입력 #1
4 5
출력 #1
a = 4
b = 5
음 일단 첫줄 코드부터 어제와 매우 흡사하다.
어제 내가 썼던 걸 복습하며 문제풀이를 해보자.
자바에서는 import 키워드를 사용해 scanner 클래스를 불러오지만,
자바스크립트는 Node.js에서는 require() 함수를 사용하고,
Node.js의 기본 모듈인 readline을 가져온다.
const readline = 부분은 불러온 모듈을 readline이라는 상수에 저장한다고 했다.
예시로 비교하자면
Java 환경은
JDK (Java Development Kit)
├── 컴파일러 (javac)
├── JRE (Java Runtime Environment)
└── JVM (Java Virtual Machine)
JavaScript 환경은
Node.js
├── V8 엔진 (Chrome의 JavaScript 엔진)
├── npm (패키지 관리자)
└── 기본 모듈들 (fs, http 등)
이렇게 볼 수 있다.
Java: Maven/Gradle
Node.js: npm
차이점은
차이점:
JDK: Java 전용
Node.js: JavaScript 실행 + 추가 기능들
이렇다고 한다.
내가 이해하기로는 자바스크립트의 코드를 실행하기 위해 필요한 드라이버라고 이해했다.
결론적으로는,
터미널에서 npm run serve, npm 어쩌고 저쩌고.. 한 구문들 엄청 썼으면서..^^..
참 부끄럽다. 근데 뭐 어쩌겠나 헷갈리면 이해하고 넘어가야지.
아는척이 더 웃기다.
암튼 옆으로 좀 빠졌는데, 다시 문제를 보면
이번에 새로 본 건 input = line.split(' '); 이 부분이다.
split 함수는
문자열을 주어진 문자열 구분자나 정규식을 기준으로 나누어 배열로 변환하는 함수라고 한다.
꽤 다양하고 쓰이는 방법이 많아서 링크를 남겨놓아야 겠다.
자바스크립트 split 함수 사용법
console.log(Number(input[0]) + Number(input[1]));
이렇게 되어있는데, 원하는 출력값은
a = 4
b = 5
이렇게 나와야 하니, 더하는 계산식이 아웃풋이 아니라, 보여지는 아웃풋이 되어야 한다.
여기서 방법은 두가지가 있는데, 일반문자열 방식과 템플릿 리터럴 방식이다.
일반 문자열 방식을 써도 답은 맞다. 하지만 템플릿 리터럴 방식이 더 많이 쓰이고 ES6에 새로 도입된 문자열 표기법이다. 또한 더 편하고 많은 걸 할 수 있다.
암튼 처음 답변에
console.log(a = ${input[0]}, b = ${input[1]} );
이렇게 썼는데 틀렸다고 나왔다. 왜냐면 저렇게 코드를 쓰면
a = 4 b = 5
이렇게 나온다. 아하하하하하
그래서 각각 따로 나눠서 썼다.
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]}`); // 여기가
console.log(`b = ${input[1]}`); // 정답존
});
이렇게 쓰니까 정답이 되었다.
다른사람의 풀이 방법도 보니,
console.log(`a = ${input[0]}\nb = ${input[1]}`)
이렇게 중간에 \n을 넣어서 띄어쓰기를 하는 방법도 있더라. 오호?
오늘은 split함수 쓰는 법 배웠다! 한발짝 더 걸었다!