문제 링크입니다: https://www.acmicpc.net/problem/1475
6과 9는 서로 뒤집어서 사용가능하다는 조건과 0이 입력 되었을 경우 1을 반환해야하는 기저사례를 숙지하고 있다면 쉽게 풀 수 있는 문제였습니다.
#include <iostream>
#include <algorithm>
using namespace std;
int N;
int plasticNum[10];
int numOfSet(void)
{
//기저 사례
if (N == 0)
return 1;
int result = 0;
while (N)
{
int idx = N % 10;
//사용할 수 있는 숫자가 갖고 있는 세트에 없을 경우
if (!plasticNum[idx])
{
//6과 9는 뒤집어서 사용 가능
if (idx == 6 && plasticNum[9] != 0)
plasticNum[9]--;
else if (idx == 9 && plasticNum[6] != 0)
plasticNum[6]--;
//세트를 추가하고 해당 숫자 사용
else
{
for (int i = 0; i < 10; i++)
plasticNum[i]++;
result++;
plasticNum[idx]--;
}
}
else
plasticNum[idx]--;
N /= 10;
}
return result;
}
int main(void)
{
cin >> N;
cout << numOfSet() << endl;
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2010번 플러그 (0) | 2018.05.05 |
---|---|
백준 1094번 막대기 (0) | 2018.05.05 |
백준 1037번 약수 (2) | 2018.05.04 |
백준 1004번 어린 왕자 (0) | 2018.05.01 |
백준 1002번 터렛 (0) | 2018.05.01 |