반응형

문제 출처 :

 

https://www.acmicpc.net/problem/1475


알고리즘 분석 :


문제 해결에 필요한 사항

1. 플라스틱 숫자 카드를 갱신해주는 방법

2. 플라스틱 숫자 카드 중 6과 9를 이용하는 방법


따로 알고리즘 해석 없이 소스 코드의 주석을 통해 설명한다.



소스 코드 : 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdio.h>
 
int set[11= { 0, }; // 플라스틱 숫자 지급 받는 배열
int cnt = 0;
 
void setting()
{
    for (int i = 0; i < 10; i++)
        set[i]++;
 
    cnt++;
}
 
int main()
{
    int arr;
    int len, i;
    int num[11= { 0, };
 
    scanf("%d"&arr);
 
     // int형 숫자들 하나씩 받아들여 해당되는 num배열에 +1
    while(arr != 0)
    {
        num[arr%10]++;
        arr = arr / 10;
    }
 
    i = 0;
    while (i != 10)
    {
        while (num[i] != 0// 
        {            
            if (set[i] != 0)
            {
                set[i]--;
                num[i]--;
            }
 
            else
                setting();
 
             // 6번 플라스틱 숫자일 때
            if (i == && set[i] == 0)
            {   // 9번 플라스틱 숫자가 존재한다면 이용
                if (set[9> && num[6> 0)
                {
                    set[9]--;
                    num[6]--;
                }
            }
            // 9번 플라스틱 숫자일 때
            if (i == && set[i] == 0)
            {     // 6번 플라스틱 숫자가 존재한다면 이용
                if (set[6> && num[9> 0)
                {
                    set[6]--;
                    num[9]--;
                }
            }
        }
 
        i++;
    }
    
    printf("%d", cnt);
 
    return 0;
}
 
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus


반응형