본문 바로가기
C++/백준 코딩테스트 풀이 C++

C++ 백준 2562번 최댓값

by jjiing 2022. 4. 13.

9개의 숫자를 입력하고 그 중에서 최댓값과 그 위치를 구하는 문제이다.

 

배열로 푸는 법, 벡터로 푸는 법으로 나누어서 풀이하겠다.

 

 

배열풀이

 

  1. 배열로 숫자 입력받기
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