문제 설명
문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
제한 사항
1 ≤ indices의 길이 < my_string의 길이 ≤ 100 my_string은 영소문자로만 이루어져 있습니다 0 ≤ indices의 원소 < my_string의 길이 indices의 원소는 모두 서로 다릅니다.
나의 코드
import java.util.*;
class Solution {
public String solution(String my_string, int[] indices) {
StringBuilder answer = new StringBuilder(my_string);
Arrays.sort(indices);
int offset = 0;
for(int i = 0; i < indices.length; i++) {
int index = indices[i] - offset;
answer.deleteCharAt(index);
offset++;
}
return answer.toString();
}
}
Arrays.sort(indices)
메서드를 사용해 인덱스 배열을 정렬하여 오름차순으로 순회하도록 함offset
을 선언하면서 이전 삭제로 인한 인덱스의 이동량을 담아줌index
에 원래 인덱스에 offset을 뺀 값을 담아서 계산해줌다른 사람 코드
class Solution {
public String solution(String my_string, int[] indices) {
String answer = "";
String[] tmp = my_string.split("");
for (int i = 0; i < indices.length; i++) {
tmp[indices[i]] = "";
}
for (String x : tmp) {
answer += x;
}
return answer;
}
}
느낀 점
단순하게 생각하고 달려들었다가 index 길이 초과 오류가 발생했다. 반복문을 돌면서 문자가 삭제됨에 따라 인덱스의 값이 변경되기 때문에 발생한 것으로 판단되어 따로 그 차이를 담아주는 int 변수를 선언하여 계산했다. 생각보다 많이 까다로웠던 문제