ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL. 22 회문 판별하기
    TIL 2020. 10. 30. 17:16
    728x90

    ## 회문 판별하기

    ## 회문 (palinedrome) 

    ## 순서를 거꾸로 읽어도 제대로 읽는 것과 같은 단어 또는 문장을 말한다. ex : 'level', 'sos', 'rotator' 등

    ## 회문은 첫번째 문자열과 맨마지막 문자열을 차근차근 비교해가며 서로의 문자열이 같은지 판별해나가며 찾는다.


    ## 반복문으로 회문 판별하기

    word = input('단어 입력 ㄱ:') # level 입력
    
    is_palindrome = True                 # 회문 판별값을 저장할 변수, 초깃값은 True
    
    for i in range(len(word) // 2):      # 0부터 문자열 길이의 절반만큼 반복 (// 목)
    
        if word[i] != word[-1 - i]:      # 왼쪽 문자와 오른쪽 문자를 비교하여 문자가 다르면
    
            is_palindrome = False        # 회문이 아님
    
            break
    
     print(is_palindrome)                 # 회문 판별값 출력
     :: 
     True # 회문 맞네

    ## 회문 판별에서 가장 중요한 부분은 문자열(단어)의 길이이다, 판별 기준을 문자열의 길이를 기준으로 하며 절반을 나누어 왼쪽 문자와 오른쪽 문자를 비교한다고 생각하면 된다.

    ## word[i] != word[-1-i] // word[0] (0으로 시작하는 인덱스번호), word[-1-0] == word[-1](-1을 기준으로 시작하는 인덱스번호)를 비교한다


    ## 시퀀스 뒤집기로 회문 판별하기

    word = input('단어를 입력하세요: ') # level 입력
    
    print(word == word[::-1])    # 원래 문자열과 반대로 뒤집은 문자열을 비교
    ::
    True

    ## word[::-1]은 문자열 전체에서 인덱스를 1씩 감소시키면서 요소를 가져오므로 문자열을 반대로 뒤집는다.


    ## 리스트와 reversed 사용하기

    word = 'level'
    
    a = list(word) # word 문자열(str)을 list 객체로 할당
    print(a) # ['l', 'e', 'v', 'e', 'l']
    b = list(reversed(word)) # word를 list로 바꿔주고 요소 값을 뒤집어주어 b에 할당
    print(b) #['l', 'e', 'v', 'e', 'l']
    
    print(a == b)
    ::
    True
    
    word = 'apple'
    
    a = list(word)
    print(a) # ['a', 'p', 'p', 'l', 'e']
    b = list(reversed(word))
    print(b) # ['e', 'l', 'p', 'p', 'a']
    
    print(a == b)
    ::
    False

    ## 위 두 리스트를 만들어 각 요소 값이 같은지 ==로 비교하여 회문인지 아닌지 판별할 수 있다.

    ## 위와 같이 반복가능한 객체의 요소순서를 뒤진는 reversed를 사용해서도 가능


    ## 문자열의 join 메서드와 reversed 사용하기

    word = 'level'
    
    print(word == ''.join(reversed(word)))
    
    ::
    True
    
    print(''.join(reversed(word)))
    # level
    
    word = 'apple'
    
    print(word == ''.join(reversed(word)))
    ::
    False
    
    print(''.join(reversed(word)))
    # elppa

    ## join은 구분된 문자열과 문자열 리스트의 요소를 연결한다.

    ## 빈문자열 ''를 이용해 각 문자를 그대로 연결하는 방식이다.

     

    728x90

    'TIL' 카테고리의 다른 글

    TIL. 24 함수 만들고 사용하기  (0) 2020.11.01
    TIL.23 N-gram 만들기  (0) 2020.10.31
    TIL. 21 파일 사용하기  (0) 2020.10.29
    TIL. 20 set_조작하기_2  (0) 2020.10.28
    TIL.19 set 조작하기  (0) 2020.10.27
Designed by Tistory.