?라는 와일드카드가 있는 특정한 패턴이 주어질 때, 이에 매치되는 팰린드롬을 찾는 문제.
T = int(input()) # 테스트 케이스의 수 T
for test_case in range(1, T+1):
word = list(input()) # 패턴 입력받기
N= len(word) # 패턴 길이 구하기
result = "Not exist"
for i in range(N):
if(word[i]=="?"): # 와일드 카드이면
word[i] = word[N-(i+1)] # 같은 위치의 문자로 대체
if(word==word[::-1]): # 대칭되면
result = "Exist" # 팰린드롬 존재!
print("#%d %s" %(test_case, result))
[문제풀이]
?는 임의의 문자로 대체될 수 있는 와일드 카드다.
if(word[i]=="?"): # 와일드 카드이면
word[i] = word[N-(i+1)] # 같은 위치의 문자로 대체
그래서 for문을 돌려서 ? 발견 시 대칭되는 위치의 문자로 대체 해준다.
그리고 이를 역순으로 읽은 값과 원 문자열이 같으면 펠린드롬이 존재한다!
'코딩테스트 > SWEA' 카테고리의 다른 글
| [Python, 파이썬] SWEA 22574. 높은 곳으로 (1) | 2024.11.11 |
|---|---|
| [Python, 파이썬] SWEA 4579. 세상의 모든 팰린드롬 2 (1) | 2024.11.11 |
| [Python, 파이썬] SWEA 5356. 의석이의 세로로 말해요 (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 1961. 숫자 배열 회전 (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 6485. 삼성시의 버스 노선 (0) | 2024.11.11 |