※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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
'BOJ' 카테고리의 다른 글
[BOJ 6605 // C++] Humble Numbers (0) | 2023.01.14 |
---|---|
[BOJ 18415 // C++] キャピタリゼーション (Capitalization) (0) | 2023.01.14 |
[BOJ 18408 // C++] 3 つの整数 (Three Integers) (0) | 2023.01.14 |
[BOJ 18410 // C++] マージ (Merge) (0) | 2023.01.14 |
[BOJ 15819 // C++] 너의 핸들은 (0) | 2023.01.13 |