백준 2562번(C++)




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;
		}
	}

최댓값인 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()을 사용해야 한다.

좋은 웹페이지 즐겨찾기