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
- directx
- baekjoon
- NRVO
- const
- 언리얼엔진5
- C++
- 팰린드롬 만들기
- GeeksForGeeks
- UnrealEngine5
- 백준
- 프로그래머스
- 1563
- DeferredRendering
- IFileDialog
- softeer
- 오블완
- Unreal Engine5
- Frustum
- 줄 세우기
- 2294
- C
- UE5
- Programmers
- UnrealEngine4
- winapi
- RootMotion
- algorithm
- DirectX11
- 티스토리챌린지
- RVO
Archives
- Today
- Total
Game Develop
[Algorithm]Baekjoon 3019 :: 테트리스 본문
https://www.acmicpc.net/problem/3019
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
|
using namespace std;
int c, p;
int arr[101] = { 0 };
vector<vector<vector<int>>> lookupTable =
{
{},
{ {0}, {0,0,0,0} }, // 1번
{ {0,0} }, // 2번
{ {0,0,1}, {1,0}}, // 3번
{ {1,0,0}, {0,1}}, // 4번
{ {0,0,0}, {0,1}, {1,0,1}, {1,0}}, // 5번
{ {0,0,0}, {0,0}, {0,1,1}, {2,0}}, // 6번
{ {0,0,0}, {0,2}, {1,1,0}, {0,0}} // 7번
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> c >> p;
int answer = 0;
for (int i = 0; i < c; ++i)
{
cin >> arr[i];
}
for (int i = 0; i < lookupTable[p].size(); ++i)
{
int blockWidth = lookupTable[p][i].size();
if (blockWidth == 1)
{
answer += c;
continue;
}
for (int j = 0; j <= c - blockWidth; ++j) // 각 열 검사.
{
int standardNum = arr[j] - lookupTable[p][i][0];
for (int k = 1; k < blockWidth; ++k)
{
if (standardNum != arr[j + k] - lookupTable[p][i][k])
{
standardNum = 0x3f3f3f3f;
break;
}
}
if (standardNum != 0x3f3f3f3f)
{
++answer;
}
}
}
cout << answer;
}
|
cs |
특정 블럭을 끝까지 내렸을 때, 빈 칸 없이 딱 들어맞는 경우의 개수를 구하는 문제이다.
딱 들어맞는지의 여부는 각 도형모양일 때, 지면과 몇칸떨어져있는지를 미리 구한 후(룩업테이블에 저장), 전부 비교해서 같은값일 경우 정답카운팅을 하는식으로 풀면 된다.
기본적으로 완탐류를 많이 좋아하지않는게.. 속된말로 빡구현이 너무 귀찮다... 특히 테트리스류는 룩업테이블을 작성해놓는게 편한경우가 많기 때문에 어쩔수없이 하긴 해야한다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[Algorithm]Baekjoon 1208 :: 부분수열의 합 2 (1) | 2024.01.29 |
---|---|
[Algorithm]Baekjoon 1197 :: 최소 스패닝 트리 (0) | 2024.01.26 |
[Algorithm]Baekjoon 15903 :: 카드 합체 놀이 (1) | 2024.01.26 |
[Algorithm]Baekjoon 2212번 :: 센서 (1) | 2024.01.26 |
[Algorithm]Baekjoon 2502번 :: 떡 먹는 호랑이 (1) | 2024.01.24 |