워낙 기초가 없어서 문법 위주로 공부를 했었는데, 하다보니 데이터 구조나 알고리즘에 대한 필요성이 많이 느껴졌다.
그리고 코딩테스트도 공부할겸 하루에 한 두시간 씩은 백준이나 프로그래머스에서 문제를 풀어볼 생각이다.
지금까지 공부했던 자바스크립트를 선택하려고 했는데 언어에 자바스크립트가 없다..?
대신 node.js
를 선택해주면 된다.
그리고 아마도 기본 값으로 C++
이 선택되어 있을텐데, 매번 선택하는게 귀찮다면 아래처럼 기본 언어로 node.js를 설정해주자.
1) 언어설정 클릭
2) node.js
를 드래그해서 최상단으로 옮기기
3) 맨 아래 저장버튼 누르기
자바스크립트로 지금까지 해오면서 출력만 해봤지 입력에 대해서는 항상 html의 input태그로만 받았었다. (그래서 뭔가 생소한 느낌적인 느낌..)
코딩테스트는 보통 아래처럼 제공되는 입력 값과 예상되는 출력 값을 제공한다.
이 값들은 텍스트 파일 형태로도 주어지는 것같다. 우리는 이 파일을 fs
모듈로 받아야 한다. (입력 파일의 경로는 "/dev/stdin"
)
그리고 입력의 형태는 매우 다양한데, 각 형태에 따라 코드를 정리해보면 아래와 같다.
// 1. 입력값이 한 개일 때(한 줄)
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim();
// 2. 입력값이 여러 개일 때(한 줄에 공백으로 구분)
/* ex)
110 78 158
*/
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
// 3. 입력값이 여러 줄일 때
/* ex)
110
78
158
*/
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
// 4. 입력값이 첫 번째 줄에는 입력 값의 길이(n), 두 번째 줄에 공백으로 구분된 입력값이 주어질 때
/* ex)
3
110 78 158
*/
const fs = require('fs');
const [n, input] = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
const inputArr = input.trim().split(" ")
// 5. 입력값이 첫 번째 줄에는 입력 값의 길이(n), n개의 줄에 걸쳐서 한 줄에 하나의 입력값이 주어질 때
/* ex)
3
110
78
158
*/
const fs = require('fs');
const [n, input] = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
더 다양한 형태가 있을 수도 있지만, 위 방식을 잘 적용하면 불러오는건 어렵지 않을 듯 싶다.