#include <iostream>
#include<vector>

using namespace std;

vector<int> a{ 1,2,3,4,5 };
vector<int> b{ 2,1,2,3,2,4,2,5 };
vector<int> c{ 3,3,1,1,2,2,4,4,5,5 };
vector<int> ret(3, 0);

int main()
{
	int n = 5;
	
	for (int i = 0; i < n; i++)
	{
		int temp{};
		cin >> temp;

		if (a[i] == temp)
			ret[0]++;
		if (b[i] == temp)
			ret[1]++;
		if (c[i] == temp)
			ret[2]++;
	}

	int m = *max_element(ret.begin(), ret.end());

	for (int i = 0; i < ret.size(); i++)
	{
		if (ret[i] == m)
			cout << i+1 << " ";
	}
	
}
  • 수표자들이 문제를 찍는 패턴을 저장, 각 학생들을 저장한 벡터 ret을 만든 뒤 현재 문제의 정답을 맞준 학생의 ret에 index에 ++을 하여 최고점을 맞은 학생을 구할 수 있다
  • 이때 max_element를 사용하여 컨테이너 안에 가장 높은 값을 갖고있는 iterator를 구할 수 있는데 여기에 *를 활용해 그 안의 값을 m 에 저장하면 최고점을 m에 저장할 수 있다
  • 이제 for문을 통해 ret안에 있는 학생들의 점수와  m을 비교해 같은 점수를 가진 학생들의 index+1을 출력해주면 된다

'코딩 태스트 > 문제풀이' 카테고리의 다른 글

게임 맵 최단거리  (0) 2025.04.02
연산자 끼워넣기-14888  (0) 2025.03.19
카펫 - 42842  (0) 2025.03.13
피보나치 수 - 12945  (0) 2025.03.13
이진 변환 반복하기 - 70129  (0) 2025.03.11