728x90
SMALL
백준 문제 풀이: 10818 [최소, 최대]
문제 링크: https://www.acmicpc.net/problem/10818
문제 설명:
주어진 N개의 정수에서 최솟값과 최댓값을 구하는 프로그램을 작성하세요.
입력 조건:
- 첫째 줄에 정수 N이 주어집니다. (1 ≤ N ≤ 1,000,000)
- 둘째 줄에는 N개의 정수가 공백으로 구분되어 주어집니다. 각 정수는 -1,000,000 이상 1,000,000 이하입니다.
출력 조건:
- 첫째 줄에 최솟값과 최댓값을 공백으로 구분하여 출력합니다.
문제 해결 코드
#include <iostream>
#include <limits> // numeric_limits 사용을 위해 포함
using namespace std;
int main() {
int n, x;
cin >> n; // 입력 개수
// 초기 최솟값과 최댓값 설정
int min = numeric_limits<int>::max(); // int형 최댓값으로 초기화
int max = numeric_limits<int>::min(); // int형 최솟값으로 초기화
for (int i = 0; i < n; i++) {
cin >> x; // 정수 입력
if (x < min) min = x; // 최솟값 갱신
if (x > max) max = x; // 최댓값 갱신
}
// 최솟값과 최댓값 출력
cout << min << ' ' << max << endl;
return 0; // 프로그램 정상 종료
}
코드 설명
위 코드는 N개의 정수를 입력받아 최솟값과 최댓값을 계산하여 출력합니다.
- 입력 처리: `cin`을 사용하여 첫 번째로 입력 개수를 받고, 이후 N개의 정수를 반복적으로 입력받습니다.
- 최솟값 및 최댓값 초기화: `numeric_limits`를 사용하여 int형의 최대값과 최소값으로 초기화합니다. 이를 통해 첫 번째 입력값에 관계없이 정확한 비교가 가능합니다.
- 값 비교 및 갱신: 각 입력값을 읽으면서 최솟값과 최댓값을 확인하여 갱신합니다.
- 출력: 갱신된 최솟값과 최댓값을 공백으로 구분하여 출력합니다.
시간 복잡도 분석:
- 입력: N개의 정수를 입력받는 데 O(N).
- 연산: 각 정수에 대해 최솟값 및 최댓값을 비교하는 데 O(N).
- 출력: 한 번의 출력으로 O(1).
따라서 전체 시간 복잡도는 O(N)입니다.
결과
다음은 입력 예시와 출력 결과입니다:
입력:
5
20 10 35 30 7
출력:
7 35
다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 수학' 카테고리의 다른 글
백준 10950번 [A+B - 3](C++)-yes6686- 티스토리 (0) | 2023.12.20 |
---|---|
백준 10869번 [사칙연산](C++)-yes6686- 티스토리 (0) | 2023.12.20 |
백준 10250번 [ACM 호텔](C++)-yes6686- 티스토리 (1) | 2023.12.20 |
백준 2594번 [놀이공원](C++)-yes6686- 티스토리 (0) | 2023.12.18 |
백준 3052번 [나머지](C++)-yes6686- 티스토리 (0) | 2023.12.18 |