꾸준히 합시다
백준 파이썬 10177번: Magic Squares 본문
https://www.acmicpc.net/problem/10177
문제 유형: 구현
# Solution 1
import sys
input = sys.stdin.readline
for _ in range(int(input())):
n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
target = sum(arr[0]) # 타겟 설정
col = 0 # 세로 비교 변수
leftDiagonal = 0 # 좌측 대각선 비교 변수
rightDiagonal = 0 # 우측 대각선 비교 변수
isMagic = True # Magic square 여부 판단
for i in range(n):
# 가로줄 검사
if target != sum(arr[i]):
isMagic = False
break
leftDiagonal += arr[i][i]
rightDiagonal += arr[i][-(i+1)]
if i == n - 1:
# 좌측 대각선 검사
if leftDiagonal != target:
isMagic = False
break
# 우측 대각선 검사
elif rightDiagonal != target:
isMagic = False
break
# 세로줄 검사
for j in range(n):
col += arr[j][i]
if j == n - 1:
if col != target:
isMagic = False
break
col = 0
print("Magic square of size %d"%n if isMagic == True else "Not a magic square")
Magic square는 사각 그리드 안에 정수를 배열한 것으로 아래 예시처럼 각 행, 각 열, 각 대각선의 숫자의 합이 모두 동일해야 한다.
위 소스 코드는 주어진 사각 그리드가 Magic square인지 여부를 판단하고, Magic square가 맞다면 그 사이즈를 출력하는 프로그램.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
백준 파이썬 4375번: 1 (0) | 2021.08.21 |
---|---|
백준 파이썬 10430번: 나머지 (0) | 2021.08.20 |
백준 파이썬 2702번: 초6 수학 (0) | 2021.07.26 |
백준 파이썬 10988번: 팰린드롬인지 확인하기 (0) | 2021.07.25 |
백준 파이썬 7567번: 그릇 (0) | 2021.07.24 |
Comments