article thumbnail image
Published 2023. 1. 6. 19:45

문제 설명

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

방 번호를 붙일 수 있는 0 ~ 9까지의 플라스틱 숫자가 한 세트가 있는데, 다솜이의 방 번호가 주어졌을 떄 필요한 세트의 개수의 최소값을 구하기

이때 9와 6은 바꿔서 사용가능

 

문제 풀이법

방 번호를 10으로 나누면서 각 번호가 총 몇 번 사용되었는지 숫자를 셈

  • 만일 6이 3개, 9가 1개이면 총 2세트만으로도 가능
  • 만일 6이 4개, 9가 1개이면 총 3세트만으로도 가능

즉, (6의 수 + 9의 수 + 1) / 2 하면 총 몇 세트가 필요한지 알 수 있음

 

arr[6] = (6의 수 + 9의 수 + 1 ) / 2

arr[9] = 0으로 설정

이후에 for문을 8까지 돌면서 가장 큰 수를 구함

 

소스 코드

#include <iostream>

using namespace std;

int main()
{
    int n;
    int arr[10] = { 0 };
    
    cin >> n;
    
    while (n > 10)
    {
        arr[n % 10]++;
        n /= 10;
    }
    arr[n % 10]++;
    
    int tmp = (arr[6] + arr[9] + 1) / 2;
    arr[6] = tmp;
    arr[9] = 0;
    
    int max = -1;
    for (int i = 0; i < 9; i++)
    {
        if (arr[i] > max)
            max = arr[i];
    }
    printf("%d\n", max);
    
    return 0;
}
복사했습니다!