문자열
my_string
과 정수 배열indices
가 주어질 때,my_string
에서indices
의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
이 문제는 단순하게 생각하면 my_string
에서 indices
에 들어있는 값들을 인덱스로 취급했을 때, 해당하는 값들을 삭제하는 문제이다. 그러나 이 문제를 풀이할 때 단순히 문자열이나 리스트에서 인덱스에 해당하는 값들을 삭제하게 되면 문자열의 해당 인덱스에 공백이나 다른 값으로 채워 넣지 않는 한 앞 뒤 값들이 붙으면 indices
의 인덱스들이 의미가 없어지는 현상이 발생한다. 따라서 이 문제는 삭제하는 값을 특정 값으로 대체한 후 마지막에 해당 값만 삭제하거나, indices
를 정렬한 후, 뒤에서부터 제거하는 방법을 사용해야 한다.
def solution(my_string, indices):
# string to list
string_list = list(my_string)
# indices에 들어있는 인덱스를 앞에서부터 제거하게 되면 그만큼 my_string에 변화가 생기기 때문에,
# indices를 내림차순 정렬 후 뒤에서부터 제거한다.
# indices 내림차순 정렬
indices.sort()
indices.reverse()
for idx in indices:
del string_list[idx]
return ''.join(string_list)
문자열 슬라이싱을 이용하면 조금 더 편하게 할 수도 있지만, 리스트를 이용할 경우 위의 방법으로 진행하면 인덱스를 내림차순 정렬한 후 뒤에서부터 값을 제거하기 때문에 앞의 문자열의 구조가 변하지 않는다.