1215. 회문1 (SWEA)
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
출처:
나의 풀이
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.