[ 백준 10818번 ] 최소, 최대
2021. 11. 9. 11:29ㆍ백준/단계별 문제
백준 10818번 / 5단계 / 최소, 최대
처음에는 그냥 배열을 안 쓰고 정수 값 하나 입력받을 때마다 min, max를 결정하는 식으로 짜고 성공을 했다
하고 보니 5단계 테마가 1차원 배열인걸 생각이 나서 배열을 쓰는 방법으로 문제를 풀었다.
배열을 쓰고 정렬을 하는 방법을 채택했다.
두 가지 방법의 채점 결과는 다음과 같다
메모리 | 시간 | |
배열을 쓰지 않은 문제 | 1112 KB | 180 ms |
배열 쓰고 정렬한 문제 | 5804 KB | 512 ms |
첫 번째 문제 풀이
모든 정수는 -1,000,000 보다 크거나 같고 1,000,000 보다 같거나 작다
이 조건을 만족하기 위해 비교 변수를 선언한다
result_min = 1000001;
result_max = -1000001;
1. 반복문이 n번까지 반복 구조를 만들어준다
2. 반복을 하면서 value 변수에 정수 값을 입력받는다.
3. 입력받은 value와 min, max 함수를 사용해 최솟값과 최댓값을 찾고 반복문이 끝나면 출력을 한다.
코드
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
int main() {
int n, i, value;
int result_min = 1000001;
int result_max = -1000001;
scanf("%d", &n);
for ( i = 0; i < n; i++ ) {
scanf("%d", &value);
result_min = min(result_min, value);
result_max = max(result_max, value);
}
printf("%d %d", result_min, result_max);
}
두 번째 문제 풀이
STL의 sort 함수를 이용한 문제이다.
정수를 입력받을 배열 1,000,000 개를 생성해준다
정렬할 때 비교가 자동으로 되게 초기화 값은 1,000,001으로 설정해준다.
1. 반복문이 n번까지 반복 구조를 만들어준다 반복을 하면서 만들어둔 배열에 정수를 입력받는다.
2. sort 함수를 이용해 정렬을 해준다. sort함수의 정렬 기본값은 오름차순이다.
입력 값 :
5
20 10 35 30 7
배열 예상모습
7, 10, 20, 30, 35, 1000001, 1000001, 1000001.....
이런 식으로 배열이 정렬이 완료되어서 0번째 인덱스와 n-1(4) 번째 인덱스를 출력해주면 된다.
배열 이미지
Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
value | 7 | 10 | 20 | 30 | 35 | 1000001 | 1000001 |
코드
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, i;
int data[1000000] = {1000001, };
cin >> n;
for ( i = 0; i < n; i++ ) {
cin >> data[i];
}
sort(data, data + n);
cout << data[0] << "\n" << data[n - 1];
}
'백준 > 단계별 문제' 카테고리의 다른 글
[ 백준 3052번 ] 나머지 (0) | 2021.11.12 |
---|---|
[ 백준 2562번 ] 최댓값 (0) | 2021.11.09 |
[ 백준 10871번 ] 더하기 사이클 (0) | 2021.11.08 |
[ 백준 10871번 ] X보다 작은 수 (0) | 2021.11.08 |
[ 백준 2439번 ] 별찍기 2 (0) | 2021.11.08 |