자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이

[탐색][시뮬레이션] - 격자판 회문수(2차원 List)

얄루몬 2022. 7. 7. 20:18

문제

  • 7X7 판에 있는 숫자들 중 5개의 숫자가 회문인지를 검사하라 이때 가로 5 세로 5만 허용한다. (꺾이면 안 됨)

문제 풀이

import sys
#sys.stdin = open("input.txt","r")


board = [list(map(int,input().split())) for _ in range(7)]
cnt = 0

for i in range(3):
    for j in range(7):
        tmp = board[j][i:i+5]
        if tmp == tmp[::-1]:
            cnt +=1

        #7X7에서 5글자만 비교하면 되기에 앞뒤로 2번만 확인해주면 됨(가운데는 어차피 다 같음)
        #세로의 경우엔 슬라이스 기능 사용 불가!
        for k in range(2):
            if board[i+k][j] != board[i+5-k-1][j]:
                break
        else:
            cnt +=1

print(cnt)
  • 가로의 경우 5번씩 총 3번 검사할 수 있어 i를 3으로 잡아두고 진행하였다.
  • 세로의 경우 슬라이싱 기능을 사용할 수 없기 때문에 5 // 2 번만큼만 앞 뒤로 문자가 같은지 확인했다. 

세로의 회문 검사의 경우!