문제 URL:
1475번: 방 번호
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
www.acmicpc.net
다음 문제는 방 번호를 만들 때 필요한 세트의 개수의 최솟값을 출력하는 문제로
6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.
이 문제는 switch문을 이용하였는데 각 숫자의 개수를 세어 필요한 세트의 개수를 알아내었다.
여기서 6과 9는 혼용하여 사용될 수 있으므로 두 수의 개수를 같은 변수에 저장해 주고 두 수의 개수를 저장한 변수를 2로 나누어 주었다.
주의할 점은 변수에 저장된 수가 홀수일 때는 +1을 해주어야 한다는 점이다.
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n, x, result;
vector<int> v(10);
cin >> n;
if(n==0)
v[0]=1;
while(n)
{
x = n%10;
n = n/10;
switch(x)
{
case 0: v[0]++; break;
case 1: v[1]++; break;
case 2: v[2]++; break;
case 3: v[3]++; break;
case 4: v[4]++; break;
case 5: v[5]++; break;
case 6: v[6]++; break;
case 7: v[7]++; break;
case 8: v[8]++; break;
case 9: v[6]++; break;
}
}
int a = v[6]%2;
v[6] /= 2;
if(a!=0)
v[6]++;
result = v[0];
for(int i=1; i<9; i++)
if(result<v[i])
result = v[i];
cout << result;
}