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