<Qeustion>
<Answer>
class Solution {
public String solution(String str, int[][] queries) {
StringBuilder sb = new StringBuilder(str);
for (int i = 0; i < queries.length; i++) {
int cnt1 = queries[i][0];
int cnt2 = queries[i][1];
String rev = sb.substring(cnt1, cnt2 + 1);
sb.replace(cnt1, cnt2 + 1, new StringBuilder(rev).reverse().toString());
}
return sb.toString();
}
}
처음에 뒤집기가 아니라 바꾸기인 줄 알고 시간 허비 ... 문제 좀 더 꼼꼼히 봐야겠다.
<자세히...>
- StringBuilder 클래스를 사용 -> 문자열을 가변적으로 처리 가능, 문자열을 효율적으로 조작하고 변경해야 하는 상황에서 유용한 클래스
- 객체 sb를 생성하여 문자열 str을 담았음
StringBuilder sb = new StringBuilder(str);
- sb의 cnt1부터 cnt2까지의 부분 문자열을 rev에 저장
String rev = sb.substring(cnt1, cnt2 + 1);
- new stringBuilder(rev).reverse() : 'rev'문자열을 역순으로 뒤집음. (reverse()메서드 사용)
- .toString() : 객체를 문자열로 변환함.
- sb.replace() : 'sb'의 'cnt1'부터 'cnt2'까지의 부분 문자열을 rev를 역순으로 뒤집은 문자열로 대체함.
=> 'rev'를 역순으로 뒤집은 후 문자열로 변환한 값을 대체 문자열로 사용하여 replace() 메서드를 호출
sb.replace(cnt1, cnt2 + 1, new StringBuilder(rev).reverse().toString());
현재 점수: 1190점 (시작일: 23.06.05)
반응형
'study > 코딩테스트' 카테고리의 다른 글
[프로그래머스][Lv2][Java] 피로도 (0) | 2023.12.27 |
---|---|
[프로그래머스][Lv2] 거리두기 확인하기 (0) | 2023.12.21 |
[알고리즘] DFS(깊이우선탐색)와 BFS(너비우선탐색) (1) | 2023.12.20 |
[프로그래머스][Lv0] 모스부호(1) (0) | 2023.06.12 |
[프로그래머스][LV0] 최빈값 구하기(JAVA) (0) | 2023.06.06 |