SWEA

[SWEA] 1989 : 초심자의 회문 검사 (Python/파이썬)

sson-coding 2025. 11. 19. 22:28

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PyTLqAf4DFAUq

문제

"level" 과 같이 거꾸로 읽어도 제대로 읽은 것과 같은 문장이나 낱말을 회문(回文, palindrome)이라 한다.

단어를 입력 받아 회문이면 1을 출력하고, 아니라면 0을 출력하는 프로그램을 작성하라.

[제약 사항]

각 단어의 길이는 3 이상 10 이하이다.

입력

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에 하나의 단어가 주어진다.

출력

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

예제

입력

3
level     
samsung
eye        
 

출력

#1 1
#2 0
#3 1

정답 및 풀이

t = int(input())

for tc in range(t):
    s = input()

    if s == s[::-1]:
        print(f'#{tc+1} 1')
    else:
        print(f'#{tc+1} 0')
  1. t = int(input())
    • 테스트 케이스 개수를 입력받는다.
  2. s = input()
    • 검사할 문자열을 입력받는다.
  3. if s == s[::-1]:
    • 문자열 s와 s[::-1](문자열 뒤집기)를 비교한다.
    • 같다면 회문(palindrome)이다.
  4. print(f'#{tc+1} 1')
    • 문자열이 회문이면 1을 출력한다.
  5. else: print(f'#{tc+1} 0')
    • 회문이 아니면 0을 출력한다.

다른 풀이

t = int(input())

for tc in range(1, t+1):
    s = input()
    left, right = 0, len(s)-1
    is_pal = 1

    while left < right:
        if s[left] != s[right]:
            is_pal = 0
            break
        left += 1
        right -= 1

    print(f'#{tc} {is_pal}')

def check(s):
    if len(s) <= 1:
        return 1
    if s[0] != s[-1]:
        return 0
    return check(s[1:-1])

t = int(input())
for tc in range(1, t+1):
    s = input()
    print(f'#{tc} {check(s)}')