문제
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
#문제 풀이 방법
1. 정수 N과 N개의 숫자들이 입력된다.(-1,000,000≤(정수)≤1,000,000)
2.최솟값과 최댓값을 출력한다.
3-1. 숫자들이 입력될 때마다 기존의 최솟값과 최댓값을 비교해서 값들을 갱신한다.
→ ①값들을 비교할 때는 조건문을 이용할 수도 있고
→ ②STL 또는 내장 함수를 이용할 수도 있을 것이다.
3-2. list or array or vector에서 바로 최솟값과 최댓값을 찾는다.
++)파이썬으로 여러방법으로 문제 풀다 추가적으로 생각난 것이 있다.
파이썬에서 N개의 숫자들을 입력받아 리스트로 저장하는 것이 대부분일 것 같은데,
리스트를 정렬하고 맨 처음 값과 맨 마지막 값을 출력하면 된다.
위와 같은 방법을 C++에서도 array이나 vector을 이용해 동일하게 사용할 수 있을 것이다.
#C/C++
#include <iostream>
#define MIN 1000000//정수의 최솟값이 -1000000
#define MAX -1000000//정수의 최댓값이 +1000000
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N;
cin>>N;
int min=MIN;
int max=MAX;
for(int i=0;i<N;i++)
{
int a;
cin>>a;
if(a>max)//최댓값 비교
{
max=a;
}
if(a<min)//최솟값 비교
{
min=a;
}
}
cout<<min<<' '<<max;
return 0;
}
#include <iostream>
#include <algorithm>//algorithm 헤더파일 이용
#define MIN 1000000
#define MAX -1000000
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N;
cin>>N;
int Min=MIN;
int Max=MAX;
for(int i=0;i<N;i++)
{
int a;
cin>>a;
Min=min(Min,a);//최솟값
Max=max(Max,a);//최댓값
}
cout<<Min<<' '<<Max;
return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N;
cin>>N;
vector<int> v;
for(int i=0;i<N;i++)
{
int a;
cin>>a;
v.push_back(a);
}
cout<<*min_element(v.begin(),v.end())<<' '<<*max_element(v.begin(),v.end());//min_element,max_element이용하여 풀기!
}
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N;
cin>>N;
int *n=new int[N];//동적할당
for(int i=0;i<N;i++)
{
cin>>n[i];
}
cout<<*min_element(n,n+N)<<' '<<*max_element(n,n+N);//min_element,max_element이용하여 값 구하기
delete n;
}
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N;
cin>>N;
vector<int> v;
for(int i=0;i<N;i++)
{
int a;
cin>>a;
v.push_back(a);
}
sort(v.begin(),v.end()); //벡터 정렬
cout<<v.front()<<' '<<v.back();//정렬된 벡터의 첫번째 원소와 마지막 원소 출력
}
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N;
cin>>N;
int *n=new int[N];//동적할당
for(int i=0;i<N;i++)
{
cin>>n[i];
}
sort(n,n+N);
cout<<n[0]<<' '<<n[N-1];
delete n;
}
#Python
N=int(input())
ls=list(map(int,input().split()))
Min=ls[0]
Max=ls[0]
for i in ls:
if i>Max:#최댓값
Max=i
elif i<Min:#최솟값
Min=i
print(Min,Max)
N=int(input())
ls=list(map(int,input().split()))
print(min(ls),max(ls))#min,max함수 이용
N=int(input())
ls=list(map(int,input().split()))
ls.sort()#리스트 정렬
print(ls[0],ls[N-1])
반응형
'PS > 백준' 카테고리의 다른 글
[백준/Baekjoon]<2675번> 문자열 반복 [C/C++/Python][Class 1] (0) | 2022.08.02 |
---|---|
[백준/Baekjoon]<2577번> 숫자의 개수 [C/C++/Python][Class 1] (0) | 2022.08.01 |
[백준/Baekjoon]<2884번> 알람 시계 [C/C++/Python][Class 1] (0) | 2022.07.22 |
[백준/Baekjoon]<2562번> 최댓값 [C/C++/Python][Class 1] (0) | 2022.07.21 |
[백준/Baekjoon]<2742번> 기찍 N [C/C++/Python][Class 1] (0) | 2022.07.20 |