알고리즘

[C++] 백준 1475번 방 번호

J3SUNG 2019. 3. 5. 22:08
728x90

0~9까지의 플라스틱 숫자 세트가 있습니다. 이를 이용해서 방 번호 N을 만들려고 합니다.

플라스틱 숫자 세트를 몇개 사용해서 방 번호를 만들 수 있는지 찾는 문제입니다.

6과 9는 뒤집어서 사용할 수 있습니다.

 

먼저 arr[]배열에 숫자가 사용 될때마다 추가를 해줍니다.

그리고 arr[9]는 arr[6]을 더해준 뒤 2로 나눕니다.

arr[0]~arr[9]에서 가장 높은 값이 나온 만큼 세트가 있다고 판단할 수 있습니다.

 

#include <iostream>
using namespace std;

int main(int argc, char * argv[])
{
   int arr[10] = { 0,};
   int num;
   int index;
   int max=0;

   cin >> num;

   do {
      index = num % 10;
      num /= 10;
      arr[index]++;
   } while (num != 0);

   arr[6] += arr[9];
   arr[6]++;
   arr[6] /= 2;
   arr[9] = 0;

   for (int i = 0; i < 10; ++i) {
      if (arr[i] > max) {
         max = arr[i];
      }
   }

   cout << max << endl;

   return 0;
}