❗[알고리즘]격자판 회문수

김도연·2024년 1월 8일

알고리즘

목록 보기
19/56

문제

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

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

입력예제1

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

출력예제1

3

[내 코드]

a=[list(map(int,input().split())) for _ in range(7)]
def is_reverse(x):
    for i in range(len(x)//2):
        if x[i]!=x[-i-1] :
            return False
    
    return True

cnt=0
myList1=[]
res=[]
myList2=[]

for i in range(7):
    for j in range(3):
        if is_reverse(a[i][j:j+5]):
            cnt+=1


for i in range(7):
    for j in range(3):
        myList2=[a[k][i] for k in range(j,j+5)]
        if is_reverse(myList2):
            cnt+=1

print(cnt)

[해설코드]

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
        for k in range(2):
        	if board[i+k][j]!=board[i+5-k-1][j]:
            	break
       	else:
        	cnt+=1
print(cnt)
         

0개의 댓글