[프로그래머스] 글자 지우기

Gloomy·2024년 1월 29일
0
post-thumbnail

문제 설명


문자열 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)

문자열 슬라이싱을 이용하면 조금 더 편하게 할 수도 있지만, 리스트를 이용할 경우 위의 방법으로 진행하면 인덱스를 내림차순 정렬한 후 뒤에서부터 값을 제거하기 때문에 앞의 문자열의 구조가 변하지 않는다.

profile
𝙋𝙤𝙨𝙨𝙤 𝙁𝙖𝙧𝙚!

0개의 댓글