❤ 격자판 회문수
1부터 9까지의 자연수로 채워진 7*7 격자판이 주어지면 격자판 위에서 가로방향 또는
세로방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램을 작성하세요.
회문수란 121과 같이 앞에서부터 읽으나 뒤에서부터 읽으나 같은 수를 말합니다.
빨간색처럼 구부러진 경우(87178)는 회문수로 간주하지 않습니다.
▣ 입력설명
1부터 9까지의 자연수로 채워진 7*7격자판이 주어집니다.
▣ 출력설명
5자리 회문수의 개수를 출력합니다.
import sys
# sys.stdin = open("input.text", "rt")
data = [list(map(int, input().split())) for _ in range(7)]
#5자리 회문수 개수
cnt = 0
#행부터 검사
for x in data:
for i in range(3):
temp = x[i:5+i]
if temp == list(reversed(temp)): #temp[::-1] 이걸로 표현해도 됨
cnt += 1
#열 검사
for i in range(7):
for j in range(3):
temp = list()
for k in range(5):
temp.append(data[j+k][i])
if temp == list(reversed(temp)):
cnt += 1
print(cnt)
🎃 코멘트
행단위로는 슬라이싱을 통해 쉽게 비교할 수 있는데, 열 단위로 추출할 때는 슬라이싱으로 추출할 수 없다. 따로 뽑아내서 비교하면 된다. reversed() 메서드는 반환값이 있는데 이걸 객체화 시켜줘야한다. 그렇기에 list로 감싸줌. 그래야 temp와 비교할 수 있어진다. 내장함수 써서 간단하게 처리할 수 있게됨.