-
TIL. 22 회문 판별하기TIL 2020. 10. 30. 17:16728x90
## 회문 판별하기
## 회문 (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