[문제] https://www.acmicpc.net/problem/10818
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
[풀이]
1. n을 입력받는다.
2. n개만큼 입력을 받으면서, //for문 사용
3. min, max를 각각 찾아준다.
4. min과 max를 사이에 공백을 두고 출력한다.
for문과 while문 모두 반복문이지만,
- 보통 반복하는 횟수가 정해져 있을 때, for문을 사용하고
- 필요하다면 무한하게(반복수를 모를 때) 반복해야 할 때, while문을 사용하는 것이 좋다.
따라서 n이라는 명확한 반복수를 입력받는 이 문제의 경우,
for문을 사용하는 것이 바람직하다고 판단했다.
max와 min은 각각 정수의 한계로 지정해준 숫자를 반대로 넣었다.
#include <iostream>
using namespace std;
int main() {
int n, num;
int max = -1000000, min = 1000000;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num;
if (num > max) max = num;
if (num < min) min = num;
}
cout << min << " " << max << endl;
return 0;
}
또한 다른 풀이들을 검색하면 알 수 있겠지만, 입력을 배열을 선언해 입력되는 모든 숫자를 저장하는 방법도 있다.
다만, 최댓값과 최솟값은 sorting과 같이 굳이 모든 숫자를 다시 훑지 않아도 찾을 수 있기 때문에 배열을 모두 저장하는 과정은 생략했다.
[백준] 1157번 단어 공부 (c++) (0) | 2021.07.07 |
---|---|
[백준] 4673번 셀프 넘버 (c++) (0) | 2021.07.05 |
[백준] 1712번 손익분기점 (c++) (0) | 2021.07.05 |
[백준] 1110번 더하기 사이클(c++) (0) | 2021.07.04 |
[백준] 2562번 최댓값 (c++) (0) | 2021.07.04 |
댓글 영역