문제 분석
- 문자열과 인덱스값이 담긴 배열이 주어졌을 때
- 배열에 있는 값에 대한 해당 인덱스의 글자를 지우고 return
코드 설계
- 문자열에서 특정 인덱스에 대한 문자를 어떻게 지울 것인가?
- 인덱스를 값이 큰 순서대로 정렬
- 문자열의 값을 뒤에서 부터 제거해야 문자열이 지워지더라됴 지우려고 하는 인덱스의 위치는 그대로이다.
정답 코드
1차 실패
def solution(my_string, indices):
answer = ''
# my_string = list(my_string)
for i in indices :
for s in range(len(my_string)) :
if i == s :
my_string = my_string[:i] + my_string[i+1:]
return my_string
이렇게 하면 처음 index가 아니라 지워지고 나서 문자열이 바뀌면 원래 지우려던 인덱스의 위치도 변한다.
단순 문자열이나 인덱스 리스트에서 인덱스에 해당하는 값들을 그냥 삭제하여 앞으로 땡겨지면 기존의 인덱스 배열의 값들이 의미가 없어져 버리는 문제가 발생한다, 따라서 특정값으로 대체 후 마지막에 해당 값만 삭제하거나, 정렬 후 뒤에서 부터 제거하는 방법을 사용해야한다.
2차
def solution(my_string, indices):
indices.sort(reverse=True)
for i in indices:
for s in range(len(my_string)):
if i == s:
my_string = my_string[:i] + my_string[i + 1:]
return my_string
다른 사람 풀이 1
def solution(my_string, indices):
answer = ''
for i in range(len(my_string)) :
if i not in indices :
answer += my_string[i]
return answer
다른 사람 풀이 2
def solution(my_string, indices):
my_string = list(my_string)
for i in sorted(indices, reverse=True) :
del my_string[i]
return ''.join(my_string)
del : 인덱스로 삭제하는 파이썬 함수
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 lv.0 가까운 1 찾기 (0) | 2024.10.23 |
---|---|
[Python] 프로그래머스 lv.0 카운트다운 (0) | 2024.10.23 |
[Python] 프로그래머스 lv.2 게임 맵 최단거리 (0) | 2024.10.22 |
[Python] 프로그래머스 lv.0 문자 개수 세기 (1) | 2024.10.22 |
[Python] 프로그래머스 lv.0 qr code (0) | 2024.10.21 |