코딩테스트/SW Expert Academy / / 2024. 10. 23. 10:41

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

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

 

✏️ 문제 풀이

- 100x100 크기의 격자에서 가로와 세로로 가능한 모든 회문을 확인하여 가장 긴 회문 찾는 프로그램

- 회문의 길이 length를 2부터 100까지 반복

- substring은 start 인덱스부터 length 길이만큼의 부분 문자열 

for tc in range(10):
    num = int(input())
    grid = [input().strip() for _ in range(100)]
    max_len = 1 # 최소 회문 길이 1

    # 가로 방향 회문 확인
    for row in grid:
        for length in range(2, 101): # 길이가 2부터 100까지
            for start in range(100 - length + 1):
                substring = row[start:start + length]
                if substring == substring[::-1]:
                    max_len = max(max_len, length)

    # 세로 방향 회문 확인
    for col in range(100):
        for length in range(2, 101): # 길이가 2부터 100까지
            for start in range(100 - length + 1):
                substring = ''.join(grid[start + z][col] for z in range(length))
                if substring == substring[::-1]:
                    max_len = max(max_len, length)

    print(f"#{num} {max_len}")
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유