부터 9까지의 자연수로 채워진 7*7 격자판이 주어지면 격자판 위에서 가로방향 또는 세로방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램을 작성하세요. 회문수란 121과 같이 앞에서부터 읽으나 뒤에서부터 읽으나 같은 수를 말합니다.

 

빨간색처럼 구부러진 경우(87178)는 회문수로 간주하지 않습니다.

 

▣ 입력설명

 

1부터 9까지의 자연수로 채워진 7*7격자판이 주어집니다.

 

▣ 출력설명

 

5자리 회문수의 개수를 출력합니다.

 

▣ 입력예제

2 4 1 5 3 2 6

3 5 1 8 7 1 7

8 3 2 7 1 3 8

6 1 2 3 2 1 1

1 3 1 3 5 3 2

1 1 2 5 6 5 2

1 2 2 2 2 1 5

 

▣ 출력예제

 

3

 

강사님 풀이

import sys
sys.stdin=open("input.txt", "r")
board = [list(map(int, input().split())) for _ in range(7)]
count = 0

for i in range(3):  #3바퀴만 돌아도 되는 이유 : 7*7행렬이기 때문에 0~4까지, 1~5까지, 2~6까지만 확인해보면 되기 때문
    for j in range(7):  #7바퀴 돌아야하는 이유 : 7열이기 때문
        temp = board[j][i:i+5]      #i부터 i+5까지 리스트 슬라이스
        if temp == temp[::-1]:      #[::-1]하면 리스트 reverse 되므로 정상 리스트 vs reverse리스트 비교
            count += 1
        for k in range(2):  #0열 vs 5열, 1열 vs 4열, 2번만 5//2 = 2이므로  2번만  2  
            if board[i+k][j] != board[i+5-k-1][j]:
                break
            else:
                count += 1
print(count)
탐색&시뮬레이션(string, 1차원, 2차원 리스트 탐색 )_11_격자판 회문수