BOJ/미해결

BOJ 14500 - 테트로미노

yanJuicy 2024. 8. 27. 13:39
반응형

문제

https://www.acmicpc.net/problem/14500

 

 

풀이

완전탐색으로 문제를 해결할 수 있다

5가지 도형을 회전해서 얻을 수 있는 모든 도형을 종이 위에 올리면서 최대값을 구한다

최대 시간은 500 * 500 * 19 * 4 = 19000000 이므로완전탐색으로 해결 가능하다

 

코드

python

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
figures = [
    [[00], [01], [10], [11]],
    [[00], [01], [02], [03]],
    [[00], [10], [20], [30]],
    [[00], [01], [02], [-12]],
    [[00], [10], [20], [21]],
    [[00], [10], [01], [02]],
    [[00], [01], [11], [21]],
    [[00], [01], [-11], [-12]],
    [[00], [10], [11], [21]],
    [[00], [01], [-11], [02]],
    [[00], [10], [20], [11]],
    [[00], [01], [02], [11]],
    [[00], [10], [20], [1-1]],
    [[00], [01], [11], [12]],
    [[00], [10], [1-1], [2-1]],
    [[00], [10], [11], [12]],
    [[00], [01], [10], [20]],
    [[00], [01], [02], [12]],
    [[00], [10], [20], [2-1]],
]
 
paper = [[0 for _ in range(505)] for _ in range(505)]
answer = 0
 
n, m = map(int, input().split())
 
for i in range(1, n + 1):
    r = list(map(int, input().split()))
    for j in range(1, m + 1):
        paper[i][j] = r[j - 1]
 
 
for i in range(1501):
    for j in range(1501):
        for k in range(19):
            sum = 0
            for l in range(4):
                y = i + figures[k][l][0]
                x = j + figures[k][l][1]
 
                if paper[y][x] == 0:
                    sum = 0
                    break
 
                sum += paper[y][x]
 
            answer = max(answer, sum)
 
 
print(answer)
 
cs

 

반응형

'BOJ > 미해결' 카테고리의 다른 글

BOJ 14888 - 연산자 끼워넣기  (2) 2024.09.14
BOJ 1019 - 책 페이지  (1) 2024.08.28
BOJ 1436 - 영화감독 숌  (0) 2024.08.23
BOJ 2630 - 색종이 만들기  (0) 2024.08.20
BOJ 2477 - 참외밭  (0) 2024.08.19