알고리즘/BOJ

백준 1475번 방 번호

꾸준함. 2018. 5. 5. 15:43

문제 링크입니다: 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