Coding_Test
[프로그래머스] 문자 반복 출력하기
안루피
2023. 9. 25. 12:30
728x90
문제 설명
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 ≤ my_string 길이 ≤ 5
- 2 ≤ n ≤ 10
- "my_string"은 영어 대소문자로 이루어져 있습니다.
입출력 예
문제 풀이
문제를 해결하며 알게된 StringBuilder
StringBuilder에 대해 알아보자.
String의 단점
서로 다른 문자열 변수 두 개가 있고 그 둘을 더한다고 하자
String str1 = "Hello";
String str2 = "World";
str1 + str2는 "HelloWorld"가 되고 이 둘과는 연관없는 새로운 String 변수에 값이 저장된다.
즉, String연산은 메모리의 낭비가 일어나기 쉽다. (불변 immutable 객체의 한계성)
StringBuilder: String의 단점 보완
StringBuilder를사용하면 추가적인 인스턴스를 생성없이 문자열의 연산을 수행한다. 기존의 데이터를 참조하는 방식인데 이로 인해 문자의 삽입과 삭제가 자유롭다. 하지만 StringBuilder가 곧 String은 아니다. 연산 이후 String으로 변환해주어야 한다. (toString()메소드)
Stringbuilder answer = new Stringbuilder();
stringbuilder의 인스턴스는 위와 같이 만들 수 있다.
StringBuilder 사용하기
그러면 어떻게 사용할까? stringbuilder 내부의 메소드를 알아보자
.length(); | 문자열의 길이를 반환 |
.reverse(); | 문자열을 뒤집어 줌 |
.append(""); | 문자 뒤에 문자열을 추가 |
.delete(index1, index2); | index1부터 index2까지 문자열 삭제 |
.insert(index, " "); | index에 문자열 값을 삽입 |
.replace(index1, index2, " "); | index1에서 index2를 문자열 값으로 대페 |
.toString(); | stringbuilder를 문자열로 변환 |
class Solution {
public String solution(String my_string, int n) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < my_string.length(); i++) {
char c = my_string.charAt(i); // 현재 문자 가져오기
for (int j = 0; j < n; j++) {
answer.append(c); // 현재 문자를 n번 반복하여 StringBuilder에 추가
}
}
return answer.toString(); // StringBuilder를 String으로 변환하여 반환
}
}
728x90