Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- UnrealEngine4
- directx
- C
- const
- 줄 세우기
- NRVO
- Unreal Engine5
- 오블완
- UE5
- 언리얼엔진5
- DeferredRendering
- Frustum
- 2294
- 프로그래머스
- 티스토리챌린지
- GeeksForGeeks
- IFileDialog
- 백준
- UnrealEngine5
- baekjoon
- 1563
- Programmers
- algorithm
- winapi
- RootMotion
- RVO
- DirectX11
- 팰린드롬 만들기
- C++
- softeer
Archives
- Today
- Total
Game Develop
[Algorithm] Baekjoon 2590번 : 색종이 본문
https://www.acmicpc.net/problem/2590
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, temp;
vector<int> v(1);
int result = 0;
for (int i = 1; i <= 6; ++i)
{
cin >> temp;
v.push_back(temp);
}
result += v[4] + v[5] + v[6]; // 한장을 붙이려면 무조건 새로운 판을 사용해야함.
// 5짜리 처리
v[1] -= v[5] * 11; // 1*1짜리 사용해서 붙일 수 있는만큼 붙이기.
// 4짜리 처리
v[2] -= v[4] * 5; // 2짜리 먼저 다 붙이고
if (v[2] < 0) // 2짜리가 부족했다면.
{
// 부족한 2짜리만큼 1짜리를 더 넣어보기.
// v[2]에는 지금 더 붙일 수 있는 2*2짜리의 개수가 들어있음. 즉, 1*1짜리를 v[2] * 4만큼 더 넣을 수 있다.
v[1] -= v[2] * 4 * -1;
v[2] = 0;
}
// 3짜리 처리
result += v[3] / 4;
v[3] %= 4;
if (v[3] > 0) // 새 판에 1개이상,3개이하 붙여져있는 상태다.
{
++result;
if (v[3] == 1)
{
// 1짜린7개, 2짜린 5개
v[1] -= 7;
v[2] -= 5;
}
else if (v[3] == 2)
{
// 1짜린6개, 2짜린 3개
v[1] -= 6;
v[2] -= 3;
}
else if (v[3] == 3)
{
// 1짜린5개, 2짜린 1개
v[1] -= 5;
v[2] -= 1;
}
if (v[2] < 0) // 2가 부족했었으면, 즉 1을 더 붙일 수 있는 상황이라면
{
v[1] -= v[2] * 4 * -1;
}
}
// 2짜리 처리
if (v[2] > 0) // 아직까지도 남아있다면..
{
result += v[2] / 9;
v[2] %= 9;
if (v[2] > 0) // 1개 ~ 8개 사이
{
++result; // 새로운 판 꺼내오고
int extraSpace = 36 - 4 * v[2]; // 1*1을 붙일 수 있는 여분의 공간
v[1] -= extraSpace;
}
}
if (v[1] > 0) // 아직까지도 남아있다면
{
result += v[1] / 36;
v[1] %= 36;
if (v[1] > 0) ++result;
}
cout << result;
}
|
cs |
반 하드코딩식으로 해결한 문제. 다른사람풀이들도 대부분 그러긴 한데, 몇몇개에선 깔끔하게 푼 사람도 있었다.
크기가 최대 6까지밖에 없어서 가능했던 것 같다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[Algorithm] Baekjoon 19644번 : 좀비떼가 기관총 진지에도 오다니 (1) | 2023.03.07 |
---|---|
[Algorithm] Baekjoon 2195번 : 문자열 복사 (0) | 2023.03.07 |
[Algorithm] Baekjoon 2891번 : 카약과 강풍 (0) | 2023.03.05 |
[Algorithm] Baekjoon 2785번 : 체인 (0) | 2023.03.04 |
[Algorithm] Baekjoon 11501번 : 주식 (0) | 2023.03.02 |