일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 백준1026
- 백준1463
- c++ 기초
- precision
- 9095
- pytorch
- 혁펜하임AI
- C++ 함수
- 반복문
- AIDEEPDIVE
- C++ 백준
- CUDA
- tensorflow
- 1로만들기
- C++ 공백 입력
- for문
- AI강의
- 혁펜하임
- 1463
- C++
- 백준
- 혁펜하임강의후기
- 조건문
- 혁펜하임강의
- 패스트캠퍼스혁펜하임
- 비교연산자
- 백준9095
- cuDNN
- 백준C++
- 패스트캠퍼스
- Today
- Total
코딩하는 덕구 🐶
31. C++ 백준 10818 최소, 최대. feat. C++ 배열 본문
안녕하세요~! 코딩하는 덕구입니다!
오늘은 C++ 배열과 함께 C++ 백준 10818 번 입니다~!
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
https://www.acmicpc.net/problem/10818
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
배열이 없어도 풀 수는 있지만 일단 배열부터 설명드리겠습니다!
#include<iostream>
using namespace std;
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int array[3]; //int 자료형을 가진 array라는 이름을 가진 3칸짜리 배열 생성
cout<<array[0]<<endl; //array 배열의 [0] 번 출력
cout<<array[1]<<endl;
cout<<array[2]<<endl;
return 0;
}
먼저 배열을 정의하는 방법은
자료형 변수명[배열 크기]; 입니다
예를 들어 int arr[3] 이면
int 자료형을 가진 변수를 3개 담을 수 있는 배열을 만드는 것이죠 (int 형 변수 3개 만든것과 같음)
컴퓨터는 보통 1이 아닌 0부터 시작합니다. 옛날에는 메모리가 작아서 비트 하나 하나가 소중했기 때문이죠!
출력 결과입니다!
array[0] ~ [2] 까지
알수없는 숫자들이 있는데 저희는 보통 칠판에 분필로 글을 쓰고 지우지만 컴퓨터는 메모리에 값을 쓰고
다시 사용하기 전까지 그냥 나두는 경우가 많습니다.
예시처럼 그래서 값을 대입해주지 않고 출력하면 알수없는 (기존에 어디선가 사용했던) 값이 출력이 되는데
이를 쓰래기 값이라고 합니다.
그러면 값을 어떻게 대입하냐 번호 하나당 한개의 변수라고 생각하시면 기존 문법과 같게 사용할 수 있습니다.
array[0] = 1 이런 식으로요
int arr[10] = {0,} 이런식으로 선언을 하면 이 arr 배열의 모든 성분이 0 으로 초기화 됩니다!
또한 arr[0] ~ arr[9] 까지는 0이지만 arr[10]은 쓰래기 값이 나온 걸 알 수 있죠
예를들어 int arr[10] 이렇게 선언하면 arr[0]~ arr[9] 까지 공간이 할당 된다는 것을 알 수 있습니다!
arr[10]은 컴파일러에 따라 작동이 되는곳도 안되는 곳도 있을 거에요!
의도한 범위를 침범했습니다. (오버플로우)
최소값과 최대값을 공백으로 구분해 출력하라고 했으니
입력을 배열에 다 저장해놓고 그중 최소, 최대를 찾아 출력하는 프로그램을 만들면 되겠죠.
C++ 백준 10818 번 문제 제 코드입니다.
#include<iostream>
using namespace std;
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int arr[1000000]; //int 형 배열 arr를 1000000크기로 생성
int N, Max, Min, input;
cin>>N;
for(int i = 0; i<N; i++){
cin>>arr[i]; //i를 0부터 N-1 까지 증가시켜 (N번 증가시키면서) arr[0]~ arr[N] 까지 입력받아서 저장
}
Max = arr[0]; //최대값을 저장할 변수 Max 에 arr[0]을 넣음
Min = arr[0]; //최소값을 저장할 변수 Min 에 arr[0]을 넣음
for(int i = 0; i<N; i++){
if(arr[i] > Max)
Max = arr[i]; // arr[i]가 Max 보다 크면 Max를 arr[i] 로 변경시켜줌
if(arr[i]<Min)
Min = arr[i]; // arr[i]가 Min 보다 작으면 Min을 arr[i] 로 변경시켜줌
}
cout<<Min<<" "<<Max; //최소값과 최대값을 형식에 맞게 출력해줌
return 0;
}
먼저 입력들을 담을 int 배열을 arr 를 만들고 배열의 크기를 입력 범위 만큼 넉넉하게 잡았습니다.
(쉽게 코드를 작성하기 위해)
그 다음 Max 와 Min의 기본값에 arr[0] 을 주고
(만약 임의로 정해버렸는데 혹은 정하지 않은 쓰래기 값이 최대, 최소 값이 되어버리면
입력에 없는 값이 출력되므로 문제를 틀리게 됨)
(arr[0]이 비록 최대 최소 값이 아니라도 for 문으로 처음부터 끝까지 비교해가면서 고쳐짐)
배열 성분들과 하나씩 비교하면서 배열 성분이 Max보다 크거나, Min 보다 작으면
그 성분을 Max, Min 값에 새로 넣어줍니다!
for 문이 끝나면 Max, Min에 최대, 최소 값이 들어가겠죠!
그리고 문제에서 요구하는 출력 방식대로 출력해주면 끝! 입니다~!
제가 운영하는 오픈 카톡방입니다. 알고리즘, 코딩, 취업정보 등 자유롭게 질문, 답변 및 대화 나눠요.
https://open.kakao.com/o/guGhqGAg
알고리즘, 코딩, 개발자 취업 질문방 (비번 4321)
#코딩 #개발자 #알고리즘 #코테 #코딩테스트 #질문 #개발직군취업 #SW #SW취업
open.kakao.com
C++ 배열과 함께 C++ 백준 10818 번 이었습니다! 감사합니다~!
'알고리즘 문제 풀이' 카테고리의 다른 글
33. C++ 백준 2577 번 숫자의 개수 (0) | 2022.01.22 |
---|---|
32. C++ 백준 2562 번 최댓값 (2) | 2022.01.22 |
30. C++ 백준 1110 번 더하기 사이클 (0) | 2022.01.21 |
29. C++ 백준 10951 번 A + B - 4 (3) | 2022.01.21 |
28. C++ 백준 10952 번 A+B - 5. feat C++ while 문 (2) | 2022.01.21 |