문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
처음에는 다음과 같이 Spread Operator를 이용해서 풀려고 했습니다.
/*
Backjoon 10818번
문제 : 최소, 최대 (https://www.acmicpc.net/problem/10818)
난이도 : 브론즈 3
*/
const fs = require("fs");
const stdin = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `5
7 10 35 30 7`
).split("\n");
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
const len = +input();
const arr = input().split(" ").map(Number);
console.log(Math.min(...arr), Math.max(...arr));
하지만 어림도 없지 StackSizeExceeded 발생!
그래서 현재 환경에서 Call Stack의 Size가 얼마나 되는지 확인해보았습니다.
15,699으로 뜨는군요...
그래서 다음과 같이 forEach로 구현했습니다.
/*
Backjoon 10818번
문제 : 최소, 최대 (https://www.acmicpc.net/problem/10818)
난이도 : 브론즈 3
*/
const fs = require("fs");
const stdin = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `5
7 10 35 30 7`
).split("\n");
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
let min = 1000000;
let max = -1000000;
const len = +input();
const arr = input().split(" ").map(Number);
arr.forEach((num) => {
if (num > max) max = num;
if (num < min) min = num;
});
console.log(min, max);
'algorithm > Backjoon' 카테고리의 다른 글
backjoon 1987 : 알파벳 / java (0) | 2021.02.19 |
---|---|
backjoon 17135번 : 캐슬 디펜스 / java (0) | 2021.02.17 |
backjoon 17478번 : 재귀 함수가 뭔가요? / Java (0) | 2021.02.01 |
backjoon 1244번 : 스위치 끄고 켜기 / Java, Python (0) | 2021.02.01 |
backjoon 2529번 : 부등호 (0) | 2020.04.07 |