2022.09.06
10818 최소,최대
https://www.acmicpc.net/problem/10818
문제
- N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
- 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
- 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
풀이1
const fs = require('fs');
const inputData = fs.readFileSync(0,'utf8').toString().trim().split('\n') // input값을 첫재 줄과 둘째 줄를 엔터값으로 나눠줌.
const data = inputData[1].split(' ');
const num = data.map((i) => Number(i)); // data값의 모든 요소들을 숫자형으로 바꿔줌.
const max = Math.max(...num);
const min = Math.min(...num);
console.log(`${min} ${max}`);
같은 방법이지만 더 가독성 있는 코드
const fs = require('fs');
const inputData = fs
.readFileSync(0,'utf8')
.toString()
.trim()
.split('\n')[1]
.split(" ")
.map((i) => parseInt(i));
const max = Math.max(...inputData);
const min = Math.min(...inputData);
console.log(`${min} ${max}`);
다른 변수를 설정하여 띄어쓰기로 배열을 나누고 숫자형으로 바꿀 필요없이 한번에 할 수 있다.
풀이3
- for문으로 풀기
const fs = require('fs');
const inputData = fs
.readFileSync(0,'utf8')
.toString()
.trim()
.split('\n')
const caseN = parseInt(inputData[0])
const data = inputData[1]
.split(" ")
.map((i) => parseInt(i));
let min = data[0];
let max = data[0];
//data[0]부터 요소들을 하나씩 비교하여 값을 찾아 넣어줌.
for(let i = 0; i<caseN;i++){
if ( min > data[i]){
min = data[i];
}
if ( max < data[i]){
max = data[i];
}
}
console.log(min,max)
'algorithm > 백준' 카테고리의 다른 글
[JS] 3052 나머지 중복제거(Set/filter&indexOf) (0) | 2022.09.09 |
---|---|
[JS] 1546 평균 (0) | 2022.09.09 |
[JS] 3003 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2022.08.25 |
[JS] 1110 더하기 사이클 문자열 / 숫자 (0) | 2022.08.25 |
[JS] 10951 A+B-4 (0) | 2022.08.23 |
댓글