코딩응애의 개발블로그

자바스크립트 백준 입력받는법 및 error: ENOENT: no such file or directory, open './input.txt' 에러 해결 과정 본문

알고리즘 문제

자바스크립트 백준 입력받는법 및 error: ENOENT: no such file or directory, open './input.txt' 에러 해결 과정

이너멜 2022. 1. 3. 15:55

자바스크립트로 백준 풀려면 입력 받는것 때문에 꽤나 귀찮고 나같은 초보자들은 처음에는 매우 힘들것이다.

백준에서 node.js 를 선택하고 코드 몇줄을 입력을 해야한다.

const fs = require('fs'); // 파일을 읽어오기 위해 Node.js의 built-in file system module fs 사용
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; 
let input = fs.readFileSync(filePath).toString().split('/n'); 
// input을 읽어와 변수로 선언 & 할당 그 내용을 input에 저장, toString(), split()을 사용해서 
// Array(배열)로 저장된다.

위에 코드 2번째 줄에 대해 설명하자면 맥 OS, 리눅스는 유닉스 기반이라 /dev/stdin를 읽어주면 터미널상에서 예제를 입력할 수 있으나 윈도우에서는 이게 불가능하다. 그래서 내 컴퓨터 즉 로컬에서 테스트 할때는 input.txt에 있는 파일을 읽어 와서 테스트 할수 있게 하고 백준에 제출 할때는 백준 공식 홈페이지에서 제공하는 입력받아 와야 하는 파일 경로(/dev/stdin)를 적어와서 로컬에서 풀때는 input.txt 파일을 읽어오고 백준에 제출했을때는 알아서 읽어오도록 하는 코드 (feat. 유튜브 라매개발자님)

에러 발생과 해결과정

근데 이 코드를 이용했을때 계속해서 error: ENOENT: no such file or directory, open './input.txt' 이러한 에러가 뭔짓을 해도 계속 발생해서 몇시간을 찾다가 겨우 해결을 했었는데 결론부터 말하자면 난 경로 문제였다.

해결하기전에도 경로 문제인거는 어렴풋이 알고 있었지만 이거를 어떻게 해결해야 하는지 잘몰랐고 각종 사이트들에서 본 해결법에서는 코드를 쓰라는데 어디다가 어떻게 쓰라는지 자세히 안나와 있어서 더욱 더 헤맸던것 같다.

해결방법은 매우 간단했다  위에 코드에서 fs.readFileSync(filePath) 이 부분을

fs.readFileSync(__dirname + '/input.txt') 이렇게 바꿔주면 끝이었다 하하; tlqk.. 밑에 분이 써준 글 덕분에 살았음;

참조 : https://likethefirst.tistory.com/entry/JavaScript-Error-ENOENT-no-such-file-or-directory 

 

[JavaScript] Error: ENOENT: no such file or directory

서버 자바스크립트 부분을 공부하던 중, fs 모듈을 추출하여 readFileSync 메서드로 동기적인 파일 읽어들이기 실습을 해보았다. 같은 폴더 내에는 textfile.txt라는 파일과, A.js 라는 파일이 있다. 먼저

likethefirst.tistory.com

물론 백준에 제출할때는 다시 바꿔 주어야 한다.

이러한 주어진 입력을 프로그래머가 코딩하기 편한 형태로 잘 정제하는 역량은 아주 중요한 역량이라고 한다 

처음에는 힘들어도 백준에서 자바스크립트로 풀어야 겠다 앞으로 익숙해 지겠지

Comments