자바스크립트 기본 문제 풀이
김태원 님의 자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비) 의 기출 문제를 푸는 시리즈이다.
해당 강의는 정보 올림피아드에 기출된 기본 유형들을 실용적인 방법으로 풀이하며, 정답을 제공한다는 측면에서 '의식적 훈련'에 적합하다.
단, 코딩 테스트 대비에 유용하다는 것이지 화이트 보드 면접을 위해서는 보다 깊은 이해를 요구함에 유의하자.
인풋 입력 받기 스켈레톤 코드
Node.js는 fs (파일 시스템) 모듈을 이용하여 외부 파일을 입력받고, readLine을 실행할 수 있다.
유명 알고리즘 사이트 '백준' 역시 리눅스를 기반으로 Node.js를 지원하고 있다.
아래의 스켈레톤 코드는 다음의 절차를 통해 인풋을 입력 받는다.
- fs 모듈을 fs 식별자에 할당한다.
- filePath는 노드js의 process객체의 platform이 리눅스이면(즉 백준에서 실행 중이면) 백준에서 권장하는 filePath로 설정하고, 그 외의 환경이면(즉 윈도우즈(windows)이거나 맥OS(darwin)) 실행중인 폴더(
__dirname
)의 input.txt파일을 경로로 한다. ( - 지정된 경로의 input.txt를 '동기적'으로 불러온다.(readFileSync)
- 불러온 파일을 toString()하여 문자열로 바꾼 후, trim(), split()을 이용하여 배열로 변환한다. 해당 배열은 input 식별자에 저장한다. (여러 줄의 인풋은
.split("\n")
으로 줄 별로 나눈다.) - input 배열을 solution() 함수에 인자로 넘겨 solution 함수 내부에서 문제를 풀이한다.
//////* 인풋을 입력받는 코드입니다. *//////
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : __dirname + '/input.txt';
let input = fs.readFileSync(filePath).toString().split(' ');
/*
동일 디렉토리의 input.txt파일을 인풋값으로 받습니다.
입력 유형에 따른 스켈레톤 코드는 맨 아래를 참조하세요.
*/
////// 문제를 푸는 란입니다. answer를 정의한 후 그 아래에 답을 입력하세요.//////
function solution(input) {
let answer = 1;
a= b= c= 3
a = b
a= 1
console.log(a)
console.log(b)
console.log(answer);
}
solution(input)
/* 인풋 입력 스켈레톤 코드
1. 하나의 값을 입력받을 때
const fs = require('fs');
const input = fs.readFileSync(filePath).toString().trim();
2. 공백으로 구분된 한 줄의 값들을 입력받을 때
const fs = require('fs');
const input = fs.readFileSync(filePath).toString().trim().split(" ");
3. 여러 줄의 값들을 입력받을 때
const fs = require('fs');
const input = fs.readFileSync(filePath).toString().trim().split("\n");
4. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄에 공백으로 구분된 n개의 값들을 입력받을 때
const fs = require('fs');
const [n, ...arr] = fs.readFileSync(filePath).toString().trim().split(/\s/);
5. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄부터 n개의 줄에 걸쳐 한 줄에 하나의 값을 입력받을 때
const fs = require('fs');
const [n, ...arr] = fs.readFileSync(filePath).toString().trim().split("\n");
6. 하나의 값 또는 공백으로 구분된 여러 값들을 여러 줄에 걸쳐 뒤죽박죽 섞여서 입력받을 때
ex) n 입력 - 공백으로 구분된 n개의 값 입력 - m 입력 - 여러 줄에 걸쳐 m개의 값 입력
const fs = require('fs');
const input = fs.readFileSync(filePath).toString().trim().split(/\s/);
const n = input[0];
const n_arr = input.slice(1, n+1);
const [m, ...m_arr] = input.slice(n+1);
출처: https://overcome-the-limits.tistory.com/25 [Plus Ultra:티스토리]
*/