티스토리 뷰

알고리즘/BOJ

[백준] 2590 색종이

세진짱 2020. 2. 4. 10:59

그리디 문제다

큰 색종이부터 붙여보면 된다 

근데 헷갈린다..

 

함수화를 잘하면 코드가 짧아지는거같은데..

 

나는 무식하게 짰다

 

진짜 다 붙여보자!

 

소스코드

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 <iostream>
using namespace std;
int arr[7],ans;
 
int solve(int size) {
    int ret = 0;
    if (size == 6) ret += arr[6];
    if (size == 5) {
        ret += arr[5];
        arr[1-= 11 * arr[5];
        if (arr[1< 0) arr[1= 0;
    }
    if (size == 4) {
        ret += arr[4];
        arr[2-= 5 * arr[4];
        if (arr[2< 0) arr[1+= 4 * arr[2];
        if (arr[2< 0) arr[2= 0;
        if (arr[1< 0) arr[1= 0;
    }
    if (size == 3) {
        ret += (arr[3/ 4);
        arr[3] %= 4;
        if (arr[3]) {
            ret += 1;
            if (arr[3== 3) {
                if (arr[2]) {
                    arr[2-= 1;
                    arr[1-= 5;
                }
                else arr[1-= 9;
            }
            else if (arr[3== 2) {
                if (arr[2]) {
                    arr[2-= 3;
                    arr[1-= 6;
                }
                else arr[1-= 18;
            }
            else if (arr[3== 1) {
                if (arr[2]) {
                    arr[2-= 5;
                    arr[1-= 7;
                }
                else arr[1-= 27;
            }
            if (arr[1< 0) arr[1= 0;
            if (arr[2< 0) arr[2= 0;
        }
    }
    if (size == 2) {
        ret += (arr[2/ 9);
        arr[2] %= 9;
        if (arr[2]) {
            ret += 1
            arr[1-= (9 - arr[2]) * 4;
            if (arr[1< 0) arr[1= 0;
        }
    }
    if (size == 1) {
        ret += (arr[1/ 36);
        if (arr[1] % 36) ret += 1;
    }
    return ret;
}
 
int main() {
    for (int i = 1; i <= 6; i++scanf(" %d"&arr[i]);
    for (int i = 6; i >= 1; i--) {
        if (arr[i]) ans += solve(i);
    }
    printf("%d\n", ans);
}
 
 
 
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
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
글 보관함