이 튜토리얼에서는 하나의 문제를 해결하는 방법을 알아보겠습니다. 문제의 내용은 다음과 같습니다. 문자열 리스트와 하나의 요소(element)가 주어졌을 때, 리스트 안에서 해당 요소와 서로 접두어 관계에 있는, 즉 거의 일치하는 문자열들을 모두 찾아야 합니다.
문제 이해하기
예시를 통해 문제를 더 쉽게 이해해 보겠습니다.
입력 strings = ["Lion", "Li", "Tiger", "Tig"] element = "Lion" 출력 Lion Li
위 예시에서 "Lion"은 element 그 자체이고, "Li"는 element로 시작하는(즉, element의 접두어인) 문자열입니다. 따라서 두 문자열 모두 조건에 부합하므로 출력 결과가 됩니다.
해결 방법
이 문제는 파이썬에서 기본적으로 제공하는 startswith() 메서드를 활용하면 간단하게 해결할 수 있습니다. startswith() 메서드는 어떤 문자열이 특정 문자열로 시작하는지 확인하여 True 또는 False를 반환합니다.
풀이 순서는 다음과 같습니다.
- 문자열 리스트와 비교할 문자열(element)을 초기화합니다.
- 리스트를 순회하면서 각 문자열을 검사합니다.
- 리스트의 문자열이 element로 시작하거나, 반대로 element가 리스트의 문자열로 시작하는 경우 조건을 만족합니다.
- 조건을 만족하는 문자열을 출력합니다.
여기서 핵심은 양방향으로 검사한다는 점입니다. 리스트의 문자열이 element보다 짧은 경우(예: "Li" vs "Lion")와 긴 경우(예: "Lioness" vs "Lion")를 모두 고려해야 하기 때문입니다.
예제 코드
## 문자열 리스트 초기화
strings = ["Lion", "Li", "Tiger", "Tig"]
element = "Lion"
for string in strings:
## 위에서 언급한 조건 검사
if string.startswith(element) or element.startswith(string):
## 조건을 만족하는 문자열 출력
print(string, end = " ")
print()실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Lion Li
마무리
이처럼 startswith() 메서드를 활용하면 별도의 외부 라이브러리 없이도 리스트에서 특정 문자열과 거의 일치하는 항목들을 손쉽게 찾을 수 있습니다. 대소문자 구분 없이 비교하고 싶다면, 비교 전에 lower() 메서드로 두 문자열을 소문자로 변환한 후 검사하면 됩니다. 프로그램에 대해 궁금한 점이 있다면 댓글로 남겨주세요.