문제 링크
https://www.acmicpc.net/problem/1475
문제 정보
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
풀이
number라는 새로운 배열을 만들어서 0 ~ 9까지의 숫자의 개수를 모두 저장한다. 그리고 6과 9는 같이 사용할 수 있으므로 6과 9의 개수의 합을 2로 나눈 값을 반올림 해준 값으로 계산한다. 그렇게 해서 각 숫자의 개수의 최댓값이 필요한 세트의 개수가 된다!
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
int number[10] = {}; // 0 ~ 9까지 숫자의 개수 저장
while (n > 0) {
number[n % 10]++;
n /= 10;
}
int ans = 1; // 기본 세트 1개!
for (int i = 0; i < 10; i++) {
if (i == 6 || i == 9) {
continue;
}
ans = max(ans, number[i]);
}
// 만약 66666 이라면 세트 3개가 필요하다.
// 따라서 6과 9의 개수의 합을 2로 나누고 반올림한 값이 답이다.
ans = max(ans, (number[6] + number[9] + 1) / 2);
cout << ans;
return 0;
}