BOJ 2577 숫자의 개수
#include <iostream>
using namespace std;
int A, B, C, N;
int mult;
int arr [10] = {0};
int main() {
cin >> A >> B >> C;
mult = A*B*C; //1702
while(mult>0){
N = mult%10; // 2
arr[N] ++; //2를 나타내는 부ㄴ +1
mult = mult/10; //170
}
for (int i = 0 ; i<10 ; i++){
cout << arr[i] << '\n';
}
return 0;
}
BOJ 1475 방 번호
for(int i = 0; i < 10; i++){
if(i == 6 || i == 9) continue;
ans = max(ans, a[i]);
}
// (a[6]+a[9])/2를 올림한 값이 6, 9에 대한 필요한 세트의 수이므로 (a[6]+a[9]+1)/2을 계산
#include <iostream>
using namespace std;
int n, m, max;
int arr [9] = {0}; //0~8
int main () {
int max = 0;
cin >> n;
while (n>0){
m = n%10;
if(m==9){m=6;}
arr[m]++;//9를 6에 같이 카운팅
n = n/10;
}
if (arr[6]%2==0){
arr[6] = arr[6]/2;
}else arr[6] = arr[6]/2+1;
max= 0;
for (int i = 0 ; i<10 ; i++){
if(arr[i]>max){
max = arr[i]; //제일 큰 것 갱신
}
}//제일 많이 필요한 숫자 찾아내기
//만약 제일 많이 필요한 숫자가 6이나 9라면 그것의 절반만 필요함. 근데 6이 4개 필요한데 3이 3개 필요하다면?
cout << max;
}
//전체 세트 갯수 = 같은 숫자의 최대 중복 수 , 그러나 중복되는 게 6이나 9일 경우 둘은 상쇄 가능하다. 한 세트에 6/9가 2개씩 들어있다.
// 1111 > 4개
// 1234 > 1개
// 1552 > 2개
// 1996 > 2개
//1995 > 1개
// 9999 > 2개