9가 4개, 6이 3개, 나머지 숫자는 1개씩 있다면,  최소 4세트가 필요하다. 
9가 2개, 6이 0개 나머지 숫자는 1개씩 있다면,  최소 1세트가 필요하다. 

[결론]

9와 6을 합했을 때 짝수 개라면, 2로 나눈 숫자만큼의 세트가 필요하다. 
9와 6을 합했을 때 홀수 개라면,  +1 한 만큼에서 2로 나눈 숫자만큼의 세트가 필요하다. 

 

cnt 에는 9와 6을 제외한 숫자의 개수 중에서, 최대 개수를 구한다. 
 
temp_sum은 9와 6의 카드 개수를 전부 누적한다.

 

 
#include <bits/stdc++.h>
using namespace std;

int n, cnt;
int v[11];

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

  cin >> n;
  string s = to_string(n);
  for(auto num : s){
    v[num - '0']++;
  }

  int temp_sum = 0, temp_cnt = 0; // 9와 6만 센다 

  for(int i = 0; i <= 9; i++){
    if(i == 9 || i == 6) temp_sum += v[i];
    else cnt = max(cnt , v[i]);
  }
  
  if( temp_sum % 2 == 0) temp_cnt = temp_sum / 2;
  else temp_cnt = (temp_sum + 1) / 2;

  cout << max(cnt, temp_cnt);

  return 0;
}
 
728x90

'알고리즘 > 백준' 카테고리의 다른 글

수 정렬하기 2 백준 2751번 c++  (0) 2022.02.16
마인크래프트 백준 18111번 c++  (0) 2022.02.14
영화감독 숌 백준 1436번 c++  (0) 2022.02.14
랜선 자르기 백준 1652번 c++  (0) 2022.02.14
카드 백준 11652번 c++  (0) 2022.02.13

+ Recent posts