728x90
문제 힌트
첫 번째 접근 방법: 문자열 배열을 사용
- 문자열을 배열로 변환: my_string.split("")을 사용하여 문자열을 문자 배열로 변환합니다. 이렇게 하면 각 문자를 개별적으로 접근할 수 있습니다.
- 인덱스를 따라 빈 문자열로 교체: 주어진 indices 배열을 순회하며, 해당 인덱스에 위치한 문자를 빈 문자열로 교체합니다.
- 결과 문자열 생성: 문자 배열을 순회하며 빈 문자열이 아닌 문자를 이어 붙여 최종 결과 문자열을 생성합니다.
두 번째 접근 방법: StringBuilder와 정렬된 인덱스를 사용
- 인덱스 배열 정렬: 주어진 indices 배열을 정렬합니다. 이렇게 하면 문자열을 순회할 때 인덱스를 빠르게 찾을 수 있습니다.
- 문자열 순회 및 문자 추가: StringBuilder를 사용하여 문자열을 순회합니다. 현재 인덱스가 indices에 포함되어 있으면 해당 문자를 건너뛰고, 포함되지 않으면 StringBuilder에 문자를 추가합니다.
- 결과 문자열 반환: StringBuilder에 저장된 문자를 문자열로 변환하여 반환합니다.
정답은 더보기 클릭
더보기
split()을 하여 처리하기
class Solution {
public String solution(String my_string, int[] indices) {
StringBuilder sb = new StringBuilder();
String[] arr = my_string.split("");
// 주어진 인덱스 위치의 문자를 빈 문자열로 변경
for (int i = 0; i < indices.length; i++) {
arr[indices[i]] = "";
}
// 배열에서 빈 문자열이 아닌 문자를 결합하여 결과 문자열 생성
for (String x : arr) {
sb.append(x);
}
return sb.toString();
}
}
배열을 정렬하여 인덱스로 처리하기
import java.util.*;
class Solution {
public String solution(String my_string, int[] indices) {
Arrays.sort(indices); // 인덱스 배열을 정렬
StringBuilder sb = new StringBuilder();
int index = 0;
for (int i = 0; i < my_string.length(); i++) {
if (index < indices.length && i == indices[index]) {
// 현재 위치가 인덱스 배열에 포함되어 있으면 건너뜀
index++;
} else {
// 그렇지 않으면 현재 문자를 StringBuilder에 추가
sb.append(my_string.charAt(i));
}
}
return sb.toString();
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 리스트 자르기 (0) | 2024.08.06 |
---|---|
[프로그래머스] 다음에 올 숫자 (0) | 2024.08.05 |
[프로그래머스] 문자 개수 세기 (0) | 2024.08.02 |
[프로그래머스] qr code (0) | 2024.08.02 |
[프로그래머스] 세로 읽기 (0) | 2024.08.02 |