[python] 백준 20112번 사토르 마방진알고리즘/백준2021. 9. 21. 18:04
Table of Contents
문제 요약 및 풀이
N을 입력받으면 N X N 만큼 크기의 단어 집합이 만들어진다.
이 단어 집합은 가로 단어와 세로 단어가 같다. (사토르 마방진의 개념) 사토르 마방진이면 YES를 아니면 NO를 출력
2차원 배열로 풀 생각으로 그려보았다.
N X N 만큼이라고 했으니 2차원 배열로 [N][N] 크기만큼 두 개의 배열을 만들어 놓는다.
사토르 마방진은 가로 단어와 세로 단어가 같다고 했기 때문에 두 개의 배열(가로 단어 집합, 세로 단어 집합)을 만들어야겠다고 생각했다.
입력받는 값들을 보면 가로로 단어를 입력받기 때문에 해당 집합을 그림과 같이 나타내 보면 세로는 대칭이라고 볼 수 있다. 2차원 배열의 특징인 [i][j]를 [j][i]로 스왑 하여 세로 단어 집합의 배열을 만들면 된다.
이해가 잘 되지 않는다면 코드를 보며 이해하면 될 것 같다.
완성된 코드!!! 👍😊
import sys
N = int(sys.stdin.readline())
# 해당 크기 만큼의 배열 초기화
row_word = [['' for _ in range(N)] for _ in range(N)]
col_word = [['' for _ in range(N)] for _ in range(N)]
result = "YES"
for i in range(N):
word = input()
for j, val in enumerate(word, start=0):
row_word[i][j] = val
col_word[j][i] = row_word[i][j]
if row_word != col_word:
result = "NO"
print(result)
'알고리즘 > 백준' 카테고리의 다른 글
[python] 백준 2052번 지수연산 (0) | 2021.10.01 |
---|---|
[python] 백준 2154번 수 이어 쓰기 3 (0) | 2021.09.29 |
[python] 백준 11723번 집합 (0) | 2021.09.16 |
[python] 백준 1094번 막대기 (0) | 2021.09.16 |
[python] 백준 1668번 트로피 진열 (0) | 2021.09.15 |
@펄찌 :: Pearl's Story
펄의 일상이 궁금한 사람 요기~
즐거운 하루 되셨으면 좋겠습니다😊