한 걸음씩

[SWEA][python] 1989 초심자의 회문 검사 본문

SWEA

[SWEA][python] 1989 초심자의 회문 검사

winter17 2023. 2. 22. 21:11

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PyTLqAf4DFAUq&categoryId=AV5PyTLqAf4DFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=PYTHON&select-1=2&pageSize=30&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

풀이 과정

T = int(input())
for t in range(1, T+1):
    word = input()

    if word[:1] == word[-1:]: # 첫 번째 문자와 마지막 문자가 일치하면 
        print(f'#{t} 1') # 팰린드롬
    else:
        print(f"#{t} 0")

리뷰

문자열 길이로 접근해서 문제를 풀어볼까 하다가 첫 번째 문자랑 마지막 문자랑 같으면 팰린드롬이 되도록 코드를 짰는데 통과를 했다

만약에 두 번째 문자와 마지막에서 두 번째 문자가 다르면 팰린드롬이 아니게 되는 함정이 있는데 이 문제 에지 케이스에서는 그런 것은 고려하지 않은 것 같다 

 

문자열 길이로 접근하는 방법은 range범위를 입력받은 문자열 길이의 반으로 나눈 값의 몫으로 정하고 

슬라이싱을 다음과 같이 하면 위에 짠 코드보다 더 정확하지 않을까 싶다

T = int(input())
for t in range(1, T+1):
    word = input()
    
    for i in range(len(word) // 2): # 입력받은 문자 길이를 세어서 반으로 나눈 값이 range 범위
        if word[i] == word[-1+i]:
            print(f'#{t} 1')
        else:
            print(f'#{t} 0')