티스토리 뷰

 우선 백준에서 JS로 문제를 풀기 위해서는 입출력 부분도 구현을 했어야했는데, 이를 위해 fs 모듈을 사용하는게 빠르다고 하여 이 모듈을 사용하여 입출력을 다루기로 하였다. 이 부분과 관련하여 잘 정리해주신 블로그가 있어 Reference에 기재하였으며, 이를 토대로 구현하였다.

 

파일 입력 받기

아래의 코드를 통해 입력되는 모든 것을 문자열의 형태로 한번에 input에 저장할 수 있다. 이후 알아서 spit() 함수를 통해 분리하여 사용하면 된다. 백준 사이트에 제출할때는 readFileSync의 인자로 '/dev/stdin/'을 주어야하지만, 로컬에서 돌릴 때에는 별도의 입력값이 적혀있는 txt 문서를 준비하고 해당 문서의 경로를 적어주면 된다.

const fs = require('fs');
let input = fs.readFileSync('/dev/stdin/').toString(); 		// 백준 제출용
let input = fs.readFileSync('test.txt').toString();		// 로컬 연습용

 

 

🎈 문제 이해 및 분석

 문제는 단순히 입력 받은 수들 중 최대/최소의 수를 가려내는 문제다. 기초부터 시작하는만큼 파일 입출력과 데이터 분리에 초점을 맞추어 작성하였다.

 

 

🎯 코드 및 문제 풀이

const fs = require('fs');
let input = fs.readFileSync('test.txt').toString().split('\n');

const n = input[0];
const numbers = input[1].split(' '); 
let min = 1000001; let max = -1000001;

for(let i=0; i<n; i++){
  numbers[i] = Number(numbers[i]);
  min = (numbers[i]<min)? numbers[i]:min;
  max = (numbers[i]>max)? numbers[i]:max;
}

console.log(min, max);

1. 입력값 분리 ( 총 데이터의 개수 / 실제 데이터 리스트 )

    - 입력값을 총 데이터의 개수와 실제 데이터 값들을 '\n'을 기준으로 분리한다.

2. 최소/최대값을 저장할 min / max 변수 설정 및 초기화 

    - min과 max 변수를 입력으로 들어올 수 있는 수의 범위 양 끝값으로 설정하여, 들어오는 입력값 사이에서 min과 max가 나올 수 있도록 한다.

3. 실제 데이터 리스트에 담긴  모두 정수화한 후, min / max과 값을 비교하며 업데이트

 

 

📕 Reference

 

[백준]백준에서 node.js 입출력 방법 정리(백준/자바스크립트/코딩테스트/알고리즘)

안녕하세요. 이번 시간에는 백준에서 node.js 입출력 방법에 대해 알아보겠습니다. 자바스크립트로 코딩테스트를 준비할 경우, 백준에서는 node.js를 선택하여야 합니다. 그런데 node.js가 좀 번거롭

nyang-in.tistory.com

 

Comments