티스토리 뷰
우선 백준에서 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
'Etc > Algorithm & Solving' 카테고리의 다른 글
[JS, Python] 약수의 합 구하기 (0) | 2022.10.08 |
---|---|
[JS] 백준 4344 평균은 넘겠지 (0) | 2022.10.03 |
[JS, Python] 하샤드 수 구하기 (1) | 2022.09.30 |
[Python] 백준 1436 #문자열 포함 여부 확인 (0) | 2022.02.28 |
[Algorithm] 매개변수 탐색 (Parametric Search) (0) | 2022.02.27 |
Comments