다솜이는 방 문앞에 방 번호를 플라스틱 글자로 붙이려고 합니다.
하지만 시중에 있는 플라스틱 글자는 0-9를 한 세트로 팔고 있습니다.
부여된 방 번호를 표현하려면 몇 세트를 구입해야할까요?
방번호 N (N은 1,000,000보다 작거나 같은 자연수 또는 0이다.)
다솜이가 구입해야하는 플라스틱 글자 세트의 개수
다솜이가 보유한 글자의 개수를 배열로 관리한다.
6과 9가 호환 가능한 거는 9를 6으로 집계함으로써 구현했다.
처음에는 바로 이전에 산 한 세트 안에서 내가 필요한 게 있는지를 검사했다.
근데 이렇게 했을 때 전전... 전전전...에 샀던 세트는 슬프게도 버려지고 만다.
10분 소요
#include<iostream>
#include<string>
#include<memory.h>
using namespace std;
//조금 현실적으로 시뮬레이션
//versionA
int one_set[10];
int ctr = 0;
void buy_new_set() {
//10개 다 돌면서 내가 가진 개수 올리는 걸로 구현 바꾸기
for (int i = 0; i < 10; i++) {
one_set[i]++;
}
one_set[6]++;//9는 6에 포함됨
ctr++;
}
int main() {
string s;
cin >> s;
buy_new_set();
for (int i = 0; i < s.size(); i++) {
//6 9 예외처리
if (s[i] == '9') {
if (one_set[6] == 0) buy_new_set();
one_set[6]--;
continue;
}
if (one_set[s[i] - '0'] == 0) buy_new_set();
one_set[s[i] - '0']--;
}
cout << ctr << endl;
}