https://school.programmers.co.kr/learn/courses/30/lessons/120921
StringBuilder 초기화, 모든 문자열 삭제
Java - StringBuilder 초기화, 모든 문자열 삭제 (codechacha.com)
- StringBuilder 객체를 처음 생성한다면 그냥 new StringBuilder()로 객체를 만들면 되겠지만, 만약 사용하던 StringBuilder를 재사용하는 경우라면, 이전에 추가한 문자열을 StringBuilder에서 삭제하고 재사용해야 한다.
1) StringBuider.setLength()로 StringBuilder의 문자열 비우기
- setLength(0)은 StringBuilder에 저장된 문자열의 길이를 0으로 변경함
- 즉 문자열을 empty로 만든다는 것은 이전에 저장한 문자열을 모두 제거한다는 뜻
public class Example {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder();
builder.append("Hello World");
builder.append(", Java");
System.out.println("sb: " + builder.toString());
builder.setLength(0);
System.out.println("sb: " + builder.toString());
builder.append("Hello World, Java");
System.out.println("sb: " + builder.toString());
}
}
/*
sb: Hello World, Java
sb:
sb: Hello World, Java
*/
정답
- 덱 자료구조 이용하여 풀이
- 문자열 A를 덱에 삽입하고 맨 뒤에 요소를 제거하고 맨 앞에 추가 하고 answer 증가
- 바뀐 구조를 StringBuilder를 이용하여 문자열로 만들고 B와 같다면 answer 리턴
import java.util.*;
class Solution {
public int solution(String A, String B) {
Deque<String> deque = new ArrayDeque<>();
StringBuilder result = new StringBuilder();
int answer = 0; // A를 민 횟수
// A 덱에 삽입
String str[] = A.split("");
for (int i = 0; i < str.length; i++) {
deque.add(str[i]);
}
// pollLast()한 것을 addFirst()하기
while (true) {
if (!deque.isEmpty()) {
String temp = deque.pollLast();
deque.addFirst(temp);
}
answer++; // 민 횟수 증가
// 문자열 재구성
result.setLength(0); // StringBuilder 초기화
for (String s : deque) {
result.append(s);
}
if (result.toString().equals(B)) {
return answer;
}
// 문자열을 밀어도 B가 되지 않는 경우
if (answer >= A.length()) {
return -1;
}
if(A.equals(B))
return 0;
}
}
}
다른 사람의 풀이
1)
class Solution {
public int solution(String A, String B) {
String tempB = B.repeat(3);
return tempB.indexOf(A);
}
}
ㄷㄷ
2)
class Solution {
public int solution(String A, String B) {
int answer = -1;
String temp = A;
for(int i = 0 ; i < A.length() ; i++){
if(temp.equals(B)){
answer = i;
break;
}
temp = temp.charAt(A.length()-1) + temp.substring(0, A.length()-1);
}
return answer;
}
}
'Java > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 다음에 올 숫자 (0) | 2024.05.12 |
---|---|
[JAVA] 프로그래머스 - 종이 자르기 (0) | 2024.05.12 |
[JAVA] 프로그래머스 - 연속된 수의 합 (0) | 2024.05.12 |
[JAVA] 프로그래머스 - k의 개수 (0) | 2024.05.12 |
[JAVA] 프로그래머스 - A로 B 만들기 (0) | 2024.05.12 |