문제 설명
문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
1 ≤ indices의 길이 < my_string의 길이 ≤ 100
my_string은 영소문자로만 이루어져 있습니다
0 ≤ indices의 원소 < my_string의 길이
indices의 원소는 모두 서로 다릅니다.
입출력 예
my_string | indices | result |
"apporoograpemmemprs" | [1, 16, 6, 15, 0, 10, 11, 3] | "programmers" |
입출력 예 설명
입출력 예 #1
예제 1번의 my_string의 인덱스가 잘 보이도록 표를 만들면 다음과 같습니다.
index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
my_string | a | p | p | o | r | o | o | g | r | a | p | e | m | m | e | m | p | r | s |
indices에 있는 인덱스의 글자들을 지우고 이어붙이면 "programmers"가 되므로 이를 return 합니다.
풀이
-> indices를 내림차순으로 정렬 한 후에 substring을 통해 my_string에서 잘라할 문자의 앞부분과 뒷부분을 더한다. 반복문을 통해 이 작업을 반복하여 잘라낼 문자를 잘라낸다. 주의할 점은 indices가 0일 때는 substring이 1부터 시작할 수 있도록 해준다.
import java.util.*;
class Solution {
public String solution(String my_string, int[] indices) {
String answer = "";
Arrays.sort(indices);
for(int i=0; i<indices.length/2; i++){
int temp = indices[i];
indices[i] = indices[indices.length - 1 - i];
indices[indices.length - 1 - i] = temp;
}
for(int i=0; i<indices.length; i++){
if(indices[i]!=0){
my_string = my_string.substring(0,indices[i])+my_string.substring(indices[i]+1);
} else {
my_string = my_string.substring(indices[i]+1);
}
}
answer = my_string;
return answer;
}
}
'Algorithm > Programmers 입문' 카테고리의 다른 글
[프로그래머스 코딩기초 트레이닝] 가까운 1 찾기 (JAVA) (0) | 2023.11.15 |
---|---|
[프로그래머스 코딩기초 트레이닝] 카운트 다운 (JAVA) (0) | 2023.11.15 |
[프로그래머스 코딩기초 트레이닝] 배열 만들기 1 (JAVA) (0) | 2023.11.10 |
[프로그래머스 코딩기초 트레이닝] 문자 개수 세기 (JAVA) (2) | 2023.11.09 |
[프로그래머스 코딩기초 트레이닝] 문자열 뒤집기 (JAVA) (0) | 2023.11.08 |