Post
1215. 회문1 (SWEA) | Gihun Son

1215. 회문1 (SWEA)

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

출처:

SW Expert Academy

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for test_case in range(1, 11):
    N=int(input())
    matrix=[]
    for _ in range(8):
        matrix.append(list(input()))
    count=0
    for i in range(8):
        for j in range(9-N):
            for k in range(N//2):
                if matrix[i][j+k]!=matrix[i][j+N-1-k]:
                    break
            else:
                count+=1
            for k in range(N//2):
                if matrix[j+k][i]!=matrix[j+N-1-k][i]:
                    break
            else:
                count+=1
    print(f'#{test_case} {count}')
  • 앞, 뒤로 읽은 것이 같다는 말은, 대칭이라는 말과 같다.
  • 전체 행렬의 크기는 8x8이므로 완전탐색으로 풀어도 무리가 없을 것이라고 생각했다.
  • 만약 column을 row처럼 유지하기 위해 transpose한 matrix를 따로 유지시켜 놓고, list자체를 뽑아와서 reverse()한 후 같은지 안 같은지를 비교해도 괜찮은 방법이라고 생각했다.
  • 우선은 위 방법대로, 하나씩 대칭되는 원소를 비교해서 구했다.
This post is licensed under CC BY 4.0 by the author.