Algorithm_javascript

자바스크립트 알고리즘 공부하기

luminouswy 2023. 5. 9. 15:35
반응형

시작

  • 컴공을 졸업하기는 했지만 학부공부를 소홀히 했기에(그렇다고 아무것도 모르는 건 아니지만 자격증 따기 정도의 알고리즘만 알고 있는 수준) 웹디자인을 배우고 다시 프론트엔드 과정을 거치면서 잘 안 되는 부분이 알고리즘이라고 생각하고 자바스크립트로 알고리즘공부가 필요하여 알고리즘을 공부하면서 정리하기 위하여 블로그를 시작하였습니다.
  • 전문 블로거가 아니기에 오타나 잘못된 부분들이 많아서 읽으시는 분들이 불편할수 있지만 잘못된 부분은 말씀해 주시면 열심히 수정하겠습니다.
  • 일단 첫 시작을 책으로 하려다가 알맞은 책을 못 찾아서 유튜브에서 알고리즘 공부하는 법을 검색해서 진행하고 있습니다.
  1. 첫 시작은 백준 알고리즘을 가입하고 문제에서 단계별로 풀어보기를 21단계(재귀) 까지 진행하려고 목표를 잡았습니다.(게으름으로 인하여 현재 14단계 까지 완료)
  2. 그다음부터 프로그래머스 풀어볼 예정

백준 자바스크립트로 풀어보기

  • 백준에 문제를 풀어 보려고 하면 입력부터 막혀서 검색으로 입력방법 찾음
  • 백준에서 푼 문제를 제출할 때 제출 언어에 자바스크립트가 없으며 node.js로 풀어야 합니다.
  • 입력은 fs모듈을 사용하는 것과 readline을 이용하는 것이 있는데 fs모듈로 진행하였습니다.

fs모듈 사용 방법

  1. 그전에 본인의 피시에 node.js를 깔아야 함
  2. 나는 단계별로 풀어보기대로 폴더를 만들고 같은 폴더 안에 js파일과 txt파일을 만들고 진행하였고 텍스트 파일에 입력값을 문제가 바뀔 때마다 계속 복붙 해 주었습니다.
  3. 아래는 첫 시작인 1000번 문제를 푼 코드이며 아래 코드로 fs 모듈 사용 방법 설명
// 아래는 모듈불러오기
const fs = require("fs");
// 백준 제출용
const input = fs.readFileSync("/dev/stdin").toString().split(" ");
// 로컬 환경에서 사용 용도 text.txt 파일은 본인 피시에 있는 텍스트 파일 이름으로 사용하면됨
const input = fs.readFileSync("./text.txt").toString().split(" ");
// 현재 사용하고 있는 한번에 제출 로컬 환경 다되는 파일
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";

const a = parseInt(input[0]);
const b = parseInt(input[1]);
console.log(a + b);
  1. 자바스크립트는 입력부터 어려워서 처음부터 헤매고 시작하였으며 다른 사람들의 코드를 검색(구글에 백준 '문제번호' javascript로 검색)하면서 입력 방법도 변경해야 합니다.

알고리즘 공부하면서 참고사항

  • 문제를 한번 푼다고 끝나는 것이 아니기에 꼭 다른 사람들의 코드를 보면서 다른 방식으로 푸는 방법도 참고하면 좋음
  • 문제를 풀면서 시간 소비가 상당히 되는데 어느 정도(문제를 풀다 보면 안 되겠다 하는 시점이 생기는 것 같습니다.) 해보고 안 되는 시간은 빠르게 다른 사람의 코드를 참고하는 것을 추천
  • 문제를 풀면서 모르는 것들이나 과정 등 필요한 모든 정보를 주석으로 활용하면 좋은 것 같습니다.