문제 풀이
여기서 중요한 부분은 'ㅗ, ㅓ, ㅏ, ㅜ' 모양의 테트로미노를 해결하는 것입니다. 따라서 이를 for문으로 예외 처리 해주었습니다. 이외의 테트로미노는 한 번에 처리가 가능하기 때문에 함수로 선언하여 문제를 풀었습니다.
코드
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
|
#include <iostream>
using namespace std;
int n, m;
int ans;
int board[500][500];
bool isVisit[500][500];
int dx[] = { 0, 0, -1, 1 };
int dy[] = { -1, 1, 0, 0 };
void ttr(int x, int y, int sum, int cnt) {
if (cnt == 4)
{
if (sum > ans)
ans = sum;
return;
}
if (isVisit[x][y] == true) return;
if (x < 0 || x >= n || y < 0 || y >= m) return;
isVisit[x][y] = true;
for (int i = 0; i < 4; i++)
ttr(x + dx[i], y + dy[i], sum + board[x][y], cnt + 1);
isVisit[x][y] = false;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ans = 0;
cin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> board[i][j];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
ttr(i, j, 0, 0);
for (int i = 1; i < n; i++)
{
for (int j = 0; j < m - 2; j++)
{
int sum = board[i][j] + board[i][j + 1] + board[i][j + 2] + board[i - 1][j + 1];
if (sum > ans)
ans = sum;
}
}
for (int i = 1; i < n - 1; i++)
{
for (int j = 0; j < m - 1; j++)
{
int sum = board[i][j] + board[i][j + 1] + board[i + 1][j + 1] + board[i - 1][j + 1];
if (sum > ans)
ans = sum;
}
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < m - 2; j++)
{
int sum = board[i][j] + board[i][j + 1] + board[i][j + 2] + board[i + 1][j + 1];
if (sum > ans)
ans = sum;
}
}
for (int i = 0; i < n - 2; i++)
{
for (int j = 0; j < m - 1; j++)
{
int sum = board[i][j] + board[i + 1][j] + board[i + 2][j] + board[i + 1][j + 1];
if (sum > ans)
ans = sum;
}
}
cout << ans;
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5; text-decoration:none">Colored by Color Scripter
|
제출 결과
문제 출처
https://www.acmicpc.net/problem/14500
14500번: 테트로미노
폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 꼭짓점끼리 연결되어 있어야 한다. 즉, 변과 꼭짓점이 맞닿아있으면 안된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져
www.acmicpc.net
'algorithm codes > baekjoon online judge' 카테고리의 다른 글
2422번: 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (백준 온라인 저지, C++) (0) | 2019.04.04 |
---|---|
14502번: 연구소 (백준 온라인 저지, C++) (0) | 2019.04.03 |
2448번: 별 찍기 - 11 (백준 온라인 저지, C++) (0) | 2019.04.02 |
1978번: 소수 찾기 (백준 온라인 저지, C++) (0) | 2019.04.02 |
2108번: 통계학 (백준 온라인 저지, C++) (0) | 2019.04.02 |