
출처
백준 온라인 저지
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
문제
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
풀이
이번 문제는 최솟값과 최댓값을 구하는 문제입니다.
split 메서드를 사용하여 줄(\n)을 기준으로 입력값을 나누어줍니다.
그 후 split 메서드를 한번 더 사용하여 공백(' ')을 기준으로 한번 더 나누어 줘야 합니다.
첫 번째 줄 주어진 정수 N을 count로 이용하여 numbers 배열에 담긴 값을 for 문을 사용해 모든 값과 비교 후 max값과 min값을 구해주었습니다. 현재 저장된 max 값보다 크면 해당 값으로 바꿔주고, min 값보다 작으면 해당 값을 바꿔줍니다.
코드
javascriptlet input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let count = Number(input[0]);
let numbers = input[1].split(' ').map(x=> Number(x));
let max = numbers[0];
let min = numbers[0];
for (let i = 1; i < count; i++) {
if (max < numbers[i]) {
max = numbers[i];
}
if (min > numbers[i]) {
min = numbers[i];
}
}
console.log(`${min} ${max}`);
다른 방식
이번에는 sort 메서드를 사용해보았습니다.
sort 메서드로 내림차순 정렬을 하면 numbers 배열에서 index 0번째가 최솟값이 되고
numbers 배열에서 첫 번째 줄에 주어진 정수 N - 1(마지막 인덱스) 은 최댓값이 됩니다.
javascriptlet input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let count = Number(input[0]);
let numbers = input[1].split(' ').map(x=> Number(x));
numbers.sort((a, b) => a - b);
console.log(`${numbers[0]} ${numbers[count - 1]}`);