티스토리 뷰

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

 

14500번: 테트로미노

폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변

www.acmicpc.net

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
shapes = (((00), (10), (20), ((30), (0-1), (01), (1-1), (11), (2-1), (21))),
          ((00), (01), (02), ((03), (-10), (10), (-11), (11), (-12), (12))),
          ((00), (01), (10), (11)),
          ((00), (10), (11), (21)),
          ((01), (10), (11), (20)),
          ((00), (01), (11), (12)),
          ((10), (01), (11), (02)))
 
n, m = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(n)]
 
answer = 0
 
 
def get_sum(y, x, li):
    summation = 0
    for l in li:
        summation += graph[y + l[0]][x + l[1]]
    return summation
 
 
for i in range(n):
    for j in range(m):
        for a in range(2):
            for b in range(7):
                try:
                    val = get_sum(i, j, shapes[a][:3+ shapes[a][3][b:b + 1])
                    if answer < val:
                        answer = val
                except IndexError:
                    pass
        for a in range(27):
            try:
                val = get_sum(i, j, shapes[a])
                if answer < val:
                    answer = val
            except IndexError:
                pass
print(answer)
cs

도형 뒤집고, 돌린거 하나 하나 다 구현해서 브루트포스로 돌렸다. 화가 난다.

원래 인덱스 검사하는거 직접 짜는 편인데, 화나서 그냥 try except로 돌리고 ㅋㅋ

마지막으로, 충격적인건

같은 코드인데, 위는 PyPy3, 아래는 Python3이다.

PyPy가 빠른건 알았는데, 확실히 빠르다.

근데 메모리는 시간이 빠른 대신 엄청나게 잡아먹는다.

 

근데 테트로미노가 아니라 테트리미노 아니었나? 흐음..

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함