문제 링크
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')
- t = int(input())
- 테스트 케이스 개수를 입력받는다.
- s = input()
- 검사할 문자열을 입력받는다.
- if s == s[::-1]:
- 문자열 s와 s[::-1](문자열 뒤집기)를 비교한다.
- 같다면 회문(palindrome)이다.
- print(f'#{tc+1} 1')
- 문자열이 회문이면 1을 출력한다.
- 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)}')
'SWEA' 카테고리의 다른 글
| [SWEA] 1959 : 두 개의 숫자열 (Python/파이썬) (0) | 2025.11.19 |
|---|---|
| [SWEA] 1961 : 숫자 배열 회전 (Python/파이썬) (0) | 2025.11.19 |
| [SWEA] 1284 : 수도 요금 경쟁 (Python/파이썬) (0) | 2025.11.19 |
| [SWEA] 2005 : 파스칼의 삼각형 (Python/파이썬) (0) | 2025.11.19 |
| [SWEA] 1979 : 어디에 단어가 들어갈 수 있을까 (Python/파이썬) (0) | 2025.11.19 |