
9개의 숫자를 입력하고 그 중에서 최댓값과 그 위치를 구하는 문제이다.
배열로 푸는 법, 벡터로 푸는 법으로 나누어서 풀이하겠다.
배열풀이
- 배열로 숫자 입력받기
int arr[9];
for (int i = 0; i < 9; i++)
{
int a;
cin >> a;
arr[i] = a;
}
2. 최댓값 구하기
#include <algorithm>
int maxArr = *max_element(arr, arr + 9);
cout << maxArr << endl;
최댓값을 구하기 위해서 algorithm 패키지의 *max_element(시작 주소 위치, 끝 주소 위치) 를 사용했다.
arr을 출력시키면 arr 배열 첫 요소 주소의 값이 나오고,
arr+n을 출력시키면 arr 배열 n번째 요소 주소의 값이 나오는 것을 활용했고,
주소값이 가르키는 값을 출력시키기 위해 앞에 *를 붙여준다.
3. 배열에서 최대값의 위치 출력하기
for (int i = 0; i < 9; i++)
{
if (arr[i] == maxArr)
{
cout << i+1 << endl;
}
}
벡터 풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> intVector;
for (int i = 0; i < 9; i++)
{
int a;
cin >> a;
intVector.push_back(a);
}
int max = *max_element(intVector.begin(), intVector.end());
cout << max << endl;
for (int i = 0; i < 9; i++)
{
if (intVector[i] == max)
{
cout << i + 1 << endl;
}
}
}
배열과 비슷한데, 다른점은 벡터 내장함수인 push_back으로 입력받은 숫자를 벡터에 넣는 것과
*max_element를 쓸 때 첫 주소의 값과 마지막 주소의 값을 begin()과 end()로 받은 점이 차이점이다.
단, 여기서 begin()과 end()는 그 값이 아니라 값을 가르키는 함수이다.
첫번째 값과 마지막 값을 불러오려면 front()와 back()을 사용해야 한다.
'C++ > 백준 코딩테스트 풀이 C++' 카테고리의 다른 글
C++ 2577 숫자의 개수 (0) | 2022.06.20 |
---|---|
c++ 1152 단어의 개수 (0) | 2022.06.15 |
C++ 2609 최대공약수 최소공배수 (0) | 2022.04.13 |
C++ 백준 10950번 A+B-3 (0) | 2022.04.13 |
C++ 백준 1008번 A/B (0) | 2022.04.12 |