코딩테스트/SW Expert Academy

[D3] 1215. [S/W 문제해결 기본] 3일차 - 회문1

2024. 10. 21. 13:52

1215. [S/W 문제해결 기본] 3일차 - 회문1

 

✏️ 문제 풀이

-  8x8 그리드에서 특정 길이 ( N )의 팰린드롬(앞뒤가 같은 문자열)을 찾는 프로그램

 

- 파이썬 문자열 뒤집기(슬라이싱 기법) [::-1]

→ start와 end를 지정하지 않으면 문자열의 처음부터 끝까지 슬라이스
→  step을 -1로 설정하면 문자열을 역순으로 가져옴

 

- 세로: (row = 0) (col = 1) (N = 3)일 경우, grid[0][1], grid[1][1], grid[2][1]의 문자들을 join으로 결합

for tc in range(10):
    N = int(input())
    grid = [input() for _ in range(8)] # 8줄의 문자열로 이루어진 grid 입력 받음
    answer = 0

    # 가로 확인
    for row in range(8):
        for col in range(8 - N + 1):
            substring = grid[row][col:col + N]
            if substring == substring[::-1]:
                answer += 1

    # 세로 확인
    for col in range(8):
        for row in range(8 - N + 1):
            substring = ''.join(grid[row+i][col] for i in range(N))
            if substring == substring[::-1]:
                answer += 1

    print(f"#{tc + 1} {answer}")