문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
예제 입력 1
5
20 10 35 30 7
예제 출력 1
7 35
두가지 풀이 방법을 생각했다.
const fs = require('fs');
const input = fs.readFileSync('dev/stdin').toString().trim().split('\n');
const arr = input[1].split(' ').map(v=>+v);
const maxValue = Math.max(...arr);
const minValue = Math.min(...arr);
console.log(`${minValue} ${maxValue}`)
분명 테스트에서는 잘 돌아가는데 왜 런타임 에러가 날까?
정말 모르겠어서 백준에 질문글을 남겨 답을 알게 되었다. 아마 테스트 예제로 준 것보다 큰 배열이 들어왔을 때 Math.min, Math.max에서 에러가 난 것 같다. 백준에서 테스트를 할 때 얼마나 많은 입력값을 주는지는 모르겠지만 ~10⁷까지의 배열까지만 Math.min, Math.max를 사용할 수 있다는 것 같다. (출처: Stack Overflow)
그래서 결국 처음 생각한 풀이로 풀어야 했음
const fs = require('fs');
const input = fs.readFileSync('dev/stdin').toString().trim().split('\n');
const n = input[0];
const arr = input[1].split(' ').map(v=>+v).sort((a,b) => a - b);
console.log(`${arr[0]} ${arr[n-1]}`);
알고리즘 풀이를 다시 시작하면서 예전에 공부했던 것들이 새록새록 기억이 나고 있는데 애매한 것을 찾아보다가 무슨 말인지 설명이 이해가 안될 때가 많다. javascript에 대한 공부가 더 필요하다고 느끼는 날이다.