막대를 세운다고 생각해 보자.
가장 튀어나온 막대의 값이 세트의 값인 것이다.
하지만 예외로 6, 9는 합쳐서 사용할 수 있다.
합친 뒤 반으로 나누면 다른 값과 동일하게 사용할 수 있는 것이다.
#include <iostream>
#include <string>
using namespace std;
int nums[10], ret;
string N;
int main()
{
cin >> N;
for (char c : N)
{
++nums[c - '0'];
}
for (int i = 0; i < 6; ++i)
{
ret = max(ret, nums[i]);
}
for (int i = 7; i < 9; ++i)
{
ret = max(ret, nums[i]);
}
ret = max(ret, (nums[6] + nums[9] + 1) / 2);
cout << ret;
return 0;
}
10의 크기를 가지는 배열을 선언해 준 뒤 0~9까지의 값을 세어준다.
그 후 6, 9를 제외한 값 중에서 가장 큰 값을 확인해 주고 6, 9는 1만큼 더한 뒤 2로 나눈다.
1을 더하는 이유는 홀수의 경우 2로 나누면 내림이 되기 때문에 1의 경우 0이 된다.