상세 컨텐츠

본문 제목

3.1 회문 문자열 검사

Algorithm/inflearn python algorithm

by 개복신 개발자 2021. 7. 12. 14:06

본문

728x90
반응형

내 풀이.

count=int(input())
string_list=[]
string_list_clone=[]

for i in range(count):
    string_list.clear()
    string_list_clone.clear()
    string=input().lower()
    
    for j in string:
        string_list.append(j)
   
    string_list_clone=string_list[::-1]

    if string_list_clone==string_list:
        print("YES")
    else:
        print("NO")

a.reverse 함수 사용시 복사본 원본 모두 순서가 바뀜

-->[::-1] 이용시 해당 리스트만 순서가 거꾸로 변경되고 원본은 유지됨

 

b.리스트에 문자열을 순서대로 집어넣고 리스트의 순서를 반대로 바꿔서 그 두 리스트를 비교하는 풀이를 사용함

 


강의 풀이.

n=int(input("n의 값을 입력하시오")) #단어의 개수를 알려줌
for i in range(n):
    s=input()
    s=s.upper()
    size=len(s)
    for j in range(size//2):
        #이 부분에 주목-->문자열의 개수가 
        #홀수일 경우에 그냥 가운데 문자는 무시하면 됨!
        #이를 코드로 표현한 것이 size//2
        
        if s[j]!=s[-1-j]:
            print("#%d NO" %(i+1))
            break
    else:
        print("#%d YES" %(i+1))

    #for-else문은 for문이 break 없이 모두 수행되었을 경우에 
    #실행되는 코드!

a. if s[j] != s[-1-j]

-->이 부분에서 문자열의 순서를 나타낼 때 -1 -2 -3... 으로 거꾸로 순서를 지정

혹은 순서대로 0,1,2,3.. 순서 지정

그 특징을 이용해서 문제를 해결함

 

 

반응형

관련글 더보기

댓글 영역