241026 코딩테스트 2

김다영·2024년 10월 26일
post-thumbnail

오늘도 자바스크립트 코딩테스트 문제를 풀어보았다.
이.. 이게 뭐여 했던 어제보다는 덜 당황하며 찬찬히 문제를 보았다.

프로그래머스 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이라는 상수에 저장한다고 했다.


순간 근원적인 궁금증이 들어서 node.js에 대해 열심히 찾아봤는데,

예시로 비교하자면

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 실행 + 추가 기능들

이렇다고 한다.
내가 이해하기로는 자바스크립트의 코드를 실행하기 위해 필요한 드라이버라고 이해했다.

결론적으로는,

  • JavaScript는 Node.js가 없어도 브라우저에서 실행 가능
  • 하지만 파일 입출력, 콘솔 입력 등을 위해서는 Node.js가 필요
  • 코딩테스트에서는 주로 Node.js 환경을 사용하므로 require()가 필요

터미널에서 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함수 쓰는 법 배웠다! 한발짝 더 걸었다!

profile
돌이켜보니, 난 한번도 멈춰있던 적이 없었다.

0개의 댓글