class Solution {
public String solution(String my_string, int k) {
String answer = "";
for(int i=0; i<k; i++) {
answer += my_string;
}
return answer;
}
}
나는 간단하게 k번 반복해서 답을 출력했지만 성능이 더 나은 풀이가 있어서 정리해보려고 한다.
이전에 StringBuilder를 써본 적이 없지만 코테를 풀 때 유용할 것 같다.
class Solution {
public String solution(String my_string, int k) {
StringBuilder sb = new StringBuilder();
for (int i=0; i<k; i++) {
sb.append(my_string);
}
return sb.toString();
}
}
또 다른 간단한 풀이
class Solution {
public String solution(String my_string, int k) {
return my_string.repeat(k);
}
}
문자열을 반복적으로 추가할 때마다 새로운 문자열 객체가 생성됩니다. Java의 String은 불변(immutable) 객체이기 때문에, 매번 새로운 문자열을 만들고 기존의 문자열을 복사해야 합니다. 이로 인해 시간 복잡도가 O(n * k)로 증가할 수 있습니다.
StringBuilder는 내부적으로 가변 배열을 사용하여 문자열을 저장합니다. 문자열을 추가할 때 기존의 내용을 수정하기 때문에 새로운 객체를 생성할 필요가 없습니다. 따라서 이 방법은 O(k)로 더 효율적입니다.
이 메서드는 내부적으로 최적화되어 있어, 문자열을 반복하는 작업을 매우 효율적으로 수행합니다. 문자열을 반복하는 데 필요한 메모리 할당과 문자열 결합을 최적화합니다.
성능적으로 O(n * k)와 비슷하지만, 최적화 덕분에 직접 StringBuilder를 사용하는 것과 유사한 성능을 보여줄 수 있습니다.