백준 2562번(C++)
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;
}
}
최댓값인 maxArr
과 각 배열의 값을 처음부터 끝까지 비교해 maxArr
과 일치할 때 그 순서를 출력해준다.
벡터 풀이
#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()
을 사용해야 한다.
Author And Source
이 문제에 관하여(백준 2562번(C++)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ko0930/백준-2562번C저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)