TIL (Today I Learned)
오늘 공부한 내용
오늘은 문자열 처리와 관련된 문제를 해결하며 문자열의 연속된 부분 문자열 찾기와 문자열 비교 시 대소문자 무시 처리에 대해 배웠습니다. 이를 기반으로 아래의 코드를 작성하였습니다.
문제 요구 사항
- 문자열 myString 내 연속된 부분 문자열 중 pat이 존재하는지 확인.
- 대소문자를 구분하지 않음.
- myString의 길이가 pat보다 짧으면 바로 0을 리턴.
구현 코드
def solution(myString, pat):
# 1. 길이 비교 후 바로 0 리턴
if len(pat) > len(myString):
return 0
# 2. 대소문자를 무시한 문자열 비교
if pat.lower() in myString.lower():
answer = 1
else:
answer = 0
return answer
코드 로직
- 길이 비교
myString의 길이가 pat보다 짧다면 부분 문자열 비교가 불가능하므로 0을 리턴합니다. - 대소문자를 무시한 비교
문자열 비교 시 대소문자를 구분하지 않기 위해 lower() 메서드를 사용하여 둘 다 소문자로 변환한 후 비교합니다. - 결과 리턴
비교 결과 pat이 myString 내에 존재하면 1, 존재하지 않으면 0을 리턴합니다.
개선점
- 가독성 향상
- answer 변수를 굳이 사용하지 않아도, 조건에 따라 바로 값을 리턴하는 방식으로 코드를 간결화할 수 있습니다.
def solution(myString, pat): if len(pat) > len(myString): return 0 return 1 if pat.lower() in myString.lower() else 0 - 주석 정리
- 코드 내 주석을 좀 더 간결하고 명확하게 정리하여 가독성을 높일 필요가 있습니다.
- 테스트 케이스 검증 강화
- 문제에서 제공된 입출력 예제 외에도 더 다양한 케이스를 테스트하여 경계 조건이나 예외 상황을 확인하는 것이 필요합니다.
오늘 느낀 점
- 문자열 비교에서 대소문자 처리는 lower() 또는 upper()를 활용하면 간단히 해결할 수 있음을 배웠습니다.
- 간결하고 효율적인 코드를 작성하기 위해 변수 사용을 줄이고 조건에 따라 바로 값을 리턴하는 방식을 고려해야 함을 느꼈습니다.
- 다양한 테스트 케이스를 추가해 코드를 검증하는 습관을 기르는 것이 중요하다고 생각했습니다.
개선 계획
- 테스트 케이스 추가
- 길이가 동일하거나 비슷한 문자열에 대해 정확히 동작하는지 확인하기 위해 다양한 테스트 케이스를 추가하겠습니다.
- 예: 대소문자 혼합된 경우, 문자열이 매우 긴 경우 등.
- 에러 핸들링 강화
- 입력값이 비정상적인 경우를 처리하기 위한 방어 코드를 추가해볼 예정입니다.
- 더 간결한 코드 연습
- 코드의 가독성을 높이면서도 효율적인 방법을 찾아 적용하도록 연습을 지속하겠습니다.
'내일배움캠프 TIL' 카테고리의 다른 글
| 2025.0110.TIL - 최댓값 구하기 문제 (0) | 2025.01.10 |
|---|---|
| 2025.01.09TIL - 프로그래머스 문제풀이 (0) | 2025.01.09 |
| 2025.01.07 TIL: 문자열 순서 바꾸기 문제 풀이 (0) | 2025.01.07 |
| 2025.01.06 TIL - 프로그래머스 입문 문제 풀이 (2) | 2025.01.06 |
| 2025.01.03 TIL- 클래스(2) (1) | 2025.01.03 |