Computer science/알고리즘
[백준, node.js] 10818번 최소, 최대 문제 해결방법
남양주개발자
2022. 1. 12. 22:42
728x90
반응형
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
예제 입력/출력 1
// 예제 입력
5
20 10 35 30 7
// 예제 출력
7 35
소스코드
Math.max, Math.min apply를 활용해서 구현하려고 했으나 런타임 에러(Maximum call stack size exceeded)가 발생해서 원인을 찾아본 결과 Math.min의 최대 스택 사이즈는 125,547개까지 가능하기 때문에 해당 문제를 풀기에 부적합한 방법이다.
그렇기 때문에 입력받은 둘째 줄의 N개의 정수를 배열로 변환 후 배열 정렬 메서드를 활용해서 정렬한 후, 처음과 끝 값을 가져와서 처리했다.
const fs = require('fs');
const [len, input] = fs.readFileSync('./dev/stdin').toString().split('\n');
const arr = input.split(' ').map(v => Number(v)).sort((a, b) => a - b);
console.log(`${arr[0]} ${arr[arr.length - 1]}`)
728x90
반응형
그리드형