728x90
728x90
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
예제 입력 1
5
20 10 35 30 7
예제 출력 1
7 35
출처
- 문제를 만든 사람: baekjoon
- 데이터를 추가한 사람: lina, topology
알고리즘 분류
- 수학
- 구현
문제 출처
https://www.acmicpc.net/problem/10818
문제 해결 방법
- 정렬 함수(sort)를 사용하지 않고 for 문을 이용하여 문제를 간단하게 해결하였다.
- 입력 받은 값(N)의 크기 만큼 동적 할당을 하여 정수형 배열을 생성한 후, N개의 값을 입력 받는다.
- new 연산자를 이용하여 동적 할당을 하고 제출 시 런타임 에러(Segfault)가 발생하였다.
- 그래서 malloc() 함수를 이용하여 동적 할당을 수행하였다.
- 한 번의 for 문을 이용하여 두 변수 min, max 를 이용하여 최솟값과 최댓값을 모두 찾은 후 출력시킨다.
코드
#include <iostream>
using namespace std;
int main() {
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
int N, min, max;
cin >> N;
int* ary = (int*)malloc(sizeof(int) * N);
for (int i = 0; i < N; i++) {
cin >> ary[i];
}
min = ary[0];
max = ary[0];
for (int i = 0; i < N; i++) {
if (min > ary[i]) {
min = ary[i];
}
if (max < ary[i]) {
max = ary[i];
}
}
cout << min << " " << max << endl;
free(ary);
return 0;
}
채점 결과
참고
- [단계별로 풀어보기] > [1차원 배열]
728x90
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ-1546][C++] 평균 (0) | 2022.07.10 |
---|---|
[BOJ-3052][C++] 나머지 (0) | 2022.07.10 |
[BOJ-2577][C++] 숫자의 개수 (0) | 2022.07.10 |
[BOJ-2562][C++] 최댓값 (0) | 2022.07.10 |
[BOJ-1110][C++] 더하기 사이클 (0) | 2022.07.09 |
[BOJ-10951][C++] A+B - 4 (0) | 2022.07.09 |
[BOJ-10952][C++] A+B - 5 (0) | 2022.07.09 |
[BOJ-10871][C++] X보다 작은 수 (0) | 2022.07.09 |