문제 요약

다솜이는 방 문앞에 방 번호를 플라스틱 글자로 붙이려고 합니다.
하지만 시중에 있는 플라스틱 글자는 0-9를 한 세트로 팔고 있습니다.
부여된 방 번호를 표현하려면 몇 세트를 구입해야할까요?

  • 단, 6과 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;
}

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN