티스토리 뷰
그리디 문제다
큰 색종이부터 붙여보면 된다
근데 헷갈린다..
함수화를 잘하면 코드가 짧아지는거같은데..
나는 무식하게 짰다
진짜 다 붙여보자!
소스코드
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);
}
|
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 17472 다리 만들기 2 (0) | 2020.02.05 |
---|---|
[백준] 2502 떡 먹는 호랑이 (1) | 2020.02.04 |
[백준] 1655 가운데를 말해요 (0) | 2020.02.03 |
[백준] 16917 양념 반 후라이드 반 (0) | 2020.02.02 |
[백준] 16988 Baaaaaaaaaduk2 (Easy) (0) | 2020.02.02 |
댓글