반응형
https://www.acmicpc.net/problem/10818
풀이
#include <iostream>
#include <vector>
int main()
{
using namespace std;
int n;
cin >> n;
vector<int>data(n);
for (int i = 0; i < n; i++)
{
cin >> data[i];
}
int max = data[0];
int min = data[0];
for (int i = 0; i < n; i++)
{
if (data[i] > max)
max = data[i];
else if (data[i] < min)
min = data[i];
}
cout << min << " " << max << endl;
return 0;
}
최소 최대 같은 경우 for문을 하면서 min max를 채우는 방식으로 진행을 했습니다. 물론 오름차순 정열을 한 다음에 앞쪽값과 끝값을 구해도 됩니다. 혹은 algorithm에 있는 min() max() 함수로 풀어도 되겠죠.
저는 먼저 vector를 통해 배열을 만들어준 다음 cin으로 data를 받아줬습니다. 그리고 그 다음 최소값 최대값 변수를 만들어주면서 for문과 if문을 사용해서 배열에서의 최대값과 최소값을 찾아냈습니다.
저기서 data[0]을 기본으로 두는 것은 만약에 0으로 초기화를 했을 때 0보다 큰 값이 min이 될 경우에는 오류가 발생하므로 그렇습니다.
사실 문제를 맞췄지만 메모리 시간이 오래 걸리는 단점이 있어서 다른 풀이를 찾아봤습니다.
다른 풀이
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int array[1000001];
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> array[i];
}
sort(array, array + n);
cout << array[0] << " " << array[n - 1];
return 0;
}
일단 배열의 크기를 큰 값으로 정해놓은 다음 진행을 했습니다. 기본적인 부분은 저와 같지만 sort() 함수를 사용해서 오름차순을 사용한 것을 볼 수 있습니다.
sort(begin, end);
이런 식으로 쓰이는 sort는 오름차순을 해주는 함수입니다.
반응형
'IT 프로그래밍 > 백준' 카테고리의 다른 글
[C++] 백준 2562 최댓값 (0) | 2024.03.16 |
---|---|
[C++] 1546 평균 (0) | 2024.03.16 |
백준 10807 개수 세기 (0) | 2024.03.16 |
[C++] 25304 영수증 (0) | 2024.03.15 |
[C++] 8393 합 (0) | 2024.03.15 |