일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- box-sizing: border-box
- li 태그
- git
- 할만한데?
- :root
- max-width
- 라매개발자
- border radius
- 백준 정리
- HTML
- 단계별로 풀어보기
- 백준 자바스크립트
- 크롬웹
- 생활코딩
- error: ENOENT: no such file or directory
- 나도코딩 파이썬
- 노마드 코더
- 드림코딩
- calc()
- 코딩테스트
- WEB2-JavaScript
- 백준
- nav태그
- git 버전관리
- 생활코딩 WEB2-JavaScript
- Pull
- 나도코딩
- button:focus cursor: pointer; outline: none;
- html 끝
- margin 0 auto
- Today
- Total
코딩응애의 개발블로그
자바스크립트 백준 입력받는법 및 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
물론 백준에 제출할때는 다시 바꿔 주어야 한다.
이러한 주어진 입력을 프로그래머가 코딩하기 편한 형태로 잘 정제하는 역량은 아주 중요한 역량이라고 한다
처음에는 힘들어도 백준에서 자바스크립트로 풀어야 겠다 앞으로 익숙해 지겠지
'알고리즘 문제' 카테고리의 다른 글
[JS] 백준 단계별로 풀어보기 (입출력과 사칙연산 1000번, 2588번) vol.2 (0) | 2022.03.03 |
---|---|
[JS] 백준 단계별로 풀어보기 (while문), 10951 trim() (0) | 2022.01.25 |
[JS] 백준 단계별로 풀어보기 (for 문) (0) | 2022.01.18 |
[JS] 백준 단계별로 풀어보기(if문) (0) | 2022.01.07 |
[JS] 백준 단계별로 풀어보기 (입출력과 사칙연산) (0) | 2022.01.03 |