JavaScript

패스트캠퍼스 JavaScript 코딩테스트 강의 1주차

Zㅣ존수빈zz 2023. 4. 22. 03:01

그동안 생각만 했던 코딩테스트를 진짜 슬슬 준비해야 할 것 같아 패스트캠퍼스에서 인강을 찾아 듣기로 했다.

Java로 할지 JavaScript로 할지 엄청나게 고민을 했으나 팔랑귀인 나에게 JavaScript 코테 자료가 많지 않다는 말은 홀라당 결정해버리기에 충분햇따,,! 거기다 CS까지 준비할수 있다니 필요 그잡채.

 

코테 유형은 비슷비슷할것이라 생각하며 일단 JavaScript부터 해보고 정 부족하다 싶으면 그 때 Java 코테를 듣는 걸로 마음먹었다. 그리고 사실 좀 만만히 본 것도 있다. 항상 만만한건 나였지만 시작하기 전에는 근자감이 차오르니깐,,!

 

근데 ch.1을 수강하면서 느낀 점은 수강하길 잘했다는 것이었다.

코테를 위해 준비하지 않는 이상 알지 못했을 내용들이 많았기 때문이다.

 

- fs와 readline

  'fs모듈'은 Node.js에 내장되어 있으며 파일시스템에 엑세스 하기위한 API를 제공하는 모듈이다.

  그동안 프로그래머스만 이용해서 몰랐지만 이렇게 파일을 읽어와야 하는 경우도 있는 모양이다. 그냥 내가 바보일지도

let fs = require('fs')
let input = fs.readFileSync('파일경로').toString().trim().split('\n');

  fs 모듈에서 파일 생성, 제거, 읽기, 쓰기 모두 가능하며 readFile은 동기, readFilsSync는 비동기로 파일을 읽어온다.

  buffer객체로 넘어오기 때문에 toString()을 이용하여 문자열 형태로 바꾼 후 줄개행(/n)을 기준으로 나눈다.

  toString을 쓰거나 파일경로 뒤 'UTF-8'이라는 두번째 파라미터를 넣어주지 않으면 에러가 발생한다.

  .trim()을 사용하면  문자열이 있는 부분만 인식하여 마지막 인수에 줄개행이 있더라도 무시하여 깔끔한 배열을 반환한다.

  readline보다 빠르지만 에러가 날 경우 readline을 사용해야 하므로 둘 다 익혀두어야 한다...

 

  파일을 읽어오는 것이 아닌 콘솔창에서 입력을 받는 경우에는 'readline 모듈'을 사용한다.

  최조에 createInterface로 input과 output을 설정해주어야 한다.

let rl = require('readline').createInterface({
	input: process.stdin,
    output: process.stdout
)};

let input = [];
rl.on('line', function(line) {
	input.push(line);
}).on('close', function() {
	console.log(input);
    	process.exit();
});

  .on(event, listener) -> line이 event, line을 input에 집어넣는 간단한 function이 리스너가 된다.

  readline은 콘솔창의 데이터를 한줄씩 읽어오므로 저마다 '한줄'이 line으로 반환되고 그것들은 input 배열에 저장된다.

  그리고 rl.close()는 인터페이스를 종료하여 무한히 입력받는 것을 방지한다.

  따라서 'close' event가 호출된 후 입력값을 출력하는 console.log(input);이 실행되고

  마지막으로 프로세스를 종료시키는 process.exit();가 실행된다.

 

- console.log()는 되도록 적게 사용할 것

  반복문 내부에 console.log()를 넣어 출력하게 되면 한번 출력할 때마다 시간이 걸린다.

  따라서 반복문 외부에 비어있는 문자열 변수를 선언하고 결과값을 +=하여 반복문이 완료된 후 한번에 console.log()로

  출력하는 것이 효율적이다.

  ex) 구구단

 

- parseInt와 Number

  둘 다 정수로 형변환을 해주는 메서드이지만 문자열을 정수로 변환할 때에는 Number가 빠르고,

  실수를 정수로 변환할 때는 parseInt를 사용한다.

 

 

 

 


 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*

https://fastcampus.co.kr/dev_online_upjscodingtest