[BOJ] #20053 - 최소, 최대 2
👻 최소, 최대 2
🌱 문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
- 시간 제한 : 1초
- 메모리 제한 : 256 MB
🌱 입력
첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 두 줄로 이루어져 있다.
각 테스트 케이스의 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
🌱 출력
각 테스트 케이스마다 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 한 줄에 하나씩 차례대로 출력한다.
🌱 예제
🪐 입출력 1
- 입력
3 5 20 28 22 25 21 5 30 21 17 25 29 5 20 10 35 30 7
- 출력
20 28 17 30 7 35
👻 풀이
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
// 최소, 최대 2
int t, n;
scanf(" %d", &t);
while (t--)
{
scanf(" %d", &n);
int num[n];
for (int i = 0; i < n; i++)
scanf(" %d", &num[i]);
sort(num, num + n);
printf("%d %d\n", num[0], num[n - 1]);
}
return 0;
}
- 시간 : 736 ms
- 메모리 : 5800 KB
👻 글을 마치며
시간, 메모리 커트라인에 거의 가깝게 소요되었다. 이런 코드는 손에 꼽는 것 같다. 시간이 적게 걸린 다른 코드를 살펴보니 배열에 담지 않고 입력 받을 때마다 대소를 비교하여 저장하였다. 나는 배열에 저장하고 아무래도 모든 데이터를 건드리는 sort 함수를 사용했기 때문에 시간이 오래 걸린 것 같다. 이런 부분은 바로바로 생각할 수 있도록 연습이 필요할 것 같다.
Leave a comment