[프로그래머스 코딩 기초 트레이닝 오답노트] 꼬리문자열
2024. 12. 23. 17:30ㆍPYTHON
문제
문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다. 꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다. 예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면 "abcghi"가 됩니다.
문자열 리스트 str_list와 제외하려는 문자열 ex가 주어질 때, str_list에서 ex를 포함한 문자열을 제외하고 만든 꼬리 문자열을 return하도록 solution 함수를 완성해주세요
제한사항
2 ≤ str_list의 길이 ≤ 10
1 ≤ str_list의 원소의 길이 ≤ 10
1 ≤ ex의 길이 ≤ 5
입출력 예
str_list | ex | result |
["abc", "def", "ghi"] | "ef" | "abcghi" |
["abc", "bbc", "cbc"] | "c" | "" |
첫번째 풀이 - 오답
def solution(str_list, ex):
for i in range(len(str_list)):
if ex in str_list[i]:
str_list.remove(str_list[i])
return str_list
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Cell In[15], line 1
----> 1 solution(["abc", "def", "ghi"], "ef")
Cell In[14], line 3
1 def solution(str_list, ex):
2 for i in range(len(str_list)):
----> 3 if ex in str_list[i]:
4 str_list.remove(str_list[i])
5 return str_list
IndexError: list index out of range
기존 리스트에서 요소를 삭제하는 경우 반복문의 index에서 벗어나는 오류가 발생
str_list = ["abc", "def", "ghi"]
ex = "ef"
# 첫 번째 반복: i = 0
# str_list[0] = "abc", "ef"는 포함되지 않음 -> 패스
# 두 번째 반복: i = 1
# str_list[1] = "def", "ef"를 포함함 -> 제거
# str_list = ["abc", "ghi"]
# 세 번째 반복: i = 2
# 이 시점에서 리스트의 길이가 줄어들었기 때문에 i = 2는 유효하지 않음
# 결과적으로 "ghi"는 검사되지 않고 남음
풀이
def solution(str_list, ex):
answer = []
for i in range(len(str_list)):
if ex not in str_list[i]:
answer.append(str_list[i])
return ''.join(answer)
'PYTHON' 카테고리의 다른 글
[프로그래머스] 코딩테스트 연습 > 코딩 기초 트레이닝 > 특정한 문자를 대문자로 바꾸기 (0) | 2024.12.17 |
---|---|
[프로그래머스]문자열 계산하기, eval() 함수 (0) | 2024.10.08 |
[프로그래머스]코딩테스트 입문 팩토리얼 (0) | 2024.09.21 |
[프로그래머스] 문자열 섞기 (0) | 2024.09.06 |
코딩테스트 연습 > 코딩테스트 입문 > 짝수 홀수 개수 (0) | 2024.09.05 |