※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 18413번 문제인 最頻値 (Mode)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/18413

 

18413번: 最頻値 (Mode)

数列 B1, B2, B3 は 2, 1, 1 となり,これらの最大値は 2 である.

www.acmicpc.net

주어지는 N개의 수 중 가장 많이 등장하는 수의 그 개수를 출력하는 문제이다.

 

등장하는 수가 M 이하이므로, 크기 M의 배열을 준비해 각 수가 등장한 수의 횟수를 세는 것으로 문제를 해결할 수 있다.

 

N과 M의 크기가 충분히 작게 주어지므로, 주어지는 N개의 수를 M회 반복해 살펴보면서 한번 살필 때마다 각 수가 몇 개씩 있는지를 세어보는 알고리즘으로도 문제를 해결할 수 있을 것이다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N, M;
int cnt[101];
int ans;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N >> M;
	while (N--) {
		int x; cin >> x;
		cnt[x]++;
	}

	for (int i = 1; i <= M; i++) ans = max(ans, cnt[i]);

	cout << ans;
}
728x90

+ Recent posts