[boj node.js] 10818번 최소, 최대 javascript
문제
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
내 풀이
두가지 풀이 방법을 생각했다.
- 배열의 api중의 하나인 sort() 로 정렬해서 마지막 수와 첫 수를 이용하는 것이 첫번째,
- 두번째는 Math.max()와 Math.min() 의 파라미터에 'Spread Operator'를 활용하여 배열을 전달해 주는 것이다.
=> 두번째가 더 마음에 들 것 같아서 그렇게 해 제출을 했는데 런타임 에러가 났다.
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에 대한 공부가 더 필요하다고 느끼는 날이다.
Author And Source
이 문제에 관하여([boj node.js] 10818번 최소, 최대 javascript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wandakim/boj-node.js-10818번-최소-최대-javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)