망나니 AWOS의 일상
article thumbnail

문제 요약 및 풀이

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)
profile

망나니 AWOS의 일상

@AWOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!