https://www.acmicpc.net/problem/10818

수의 배열을 입력받고 최솟값과 최댓값을 출력해주면 되는 문제이다. 처음에 정렬한 다음 처음과 끝 값을 출력하려고 했는데 정렬이 nlogn의 시간이 걸리고 min max element를 출력해주는 함수는 n의 시간이 걸리기 때문에 더 효율적이라고 한다.
하지만 limits 라이브러리를 활용하여 배열을 사용하지 않고도 이 문제를 해결할 수도 있다. 이때 limits함수의 max min을 저장해두고 만약 더 큰값이나 더 작은 값이 있다면 이 값으로 변경해주면 된다.
정답코드(배열 사용)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> v(n);
for (int i = 0;i < n;i++)
{
cin >> v[i];
}
cout << *min_element(v.begin(),v.end()) << " " << *max_element(v.begin(),v.end());
return 0;
}
정답코드(limits 라이브러리 사용)
#include <iostream>
#include <limits>
using namespace std;
int main() {
int n, num;
cin >> n;
int minVal = numeric_limits<int>::max();
int maxVal = numeric_limits<int>::min();
for (int i = 0; i < n; i++) {
cin >> num;
if (num < minVal) minVal = num;
if (num > maxVal) maxVal = num;
}
cout << minVal << " " << maxVal << "\n";
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]10811번. 바구니 뒤집기 (0) | 2025.03.06 |
---|---|
[백준][C++]2562번. 최댓값 (0) | 2025.03.06 |
[백준][C++][LIS,DP]11054번. 가장 긴 바이토닉 부분 수열 (0) | 2025.02.14 |
[백준][C++][DP]2156번. 포도주 시식 (0) | 2025.02.13 |
[백준][C++][DP]10844번. 쉬운 계단 수 (0) | 2025.02.11 |