반응형
문제
https://www.acmicpc.net/problem/20112
문제 설명
- $N*N$ 크기의 배열이 주어진다.
- 해당 배열이 사토르 마방진인지 판별한다.
- 가로로 읽었을 때 똑같이 읽혀야 한다.
- 세로로 읽었을 때 똑같이 읽혀야 한다.
풀이
- 가로 단어를 A, 세로 단어를 B에 저장한다.
- 가로 단어를 join을 통해 저장한다.
- 세로 단어를 for 문을 통해 한 글자씩 저장 후 join을 통해 저장한다.
- 두 단어 A와 B가 맞는지 검증한다.
코드
import sys
input = sys.stdin.readline
n = int(input())
board = [list(input().strip()) for _ in range(n)]
for i in range(n):
a = ''.join(board[i])
b = []
for j in range(n):
b.append(board[j][i])
b = ''.join(b)
if a != b:
print("NO")
exit()
print("YES")
시간복잡도
- 단순 구현 문제이다. 시간 복잡도는 $O(N*N)$이다.
- 최대 $N = 100$ 이므로 $O(10^4)$의 시간복잡도를 가진다.
반응형
'알고리즘' 카테고리의 다른 글
| [파이썬/python] 백준 - 14713 앵무새 (0) | 2025.06.29 |
|---|---|
| [파이썬/python] 백준 - 15815 천재 수학자 성필 (0) | 2025.06.28 |
| [파이썬/python] 백준 - 32200 항해 (0) | 2025.06.26 |
| [파이썬/python] 백준 - 12934 턴 게임 (0) | 2025.06.25 |
| [파이썬/python] 백준 - 10844 쉬운 계단 수 (0) | 2025.02.07 |