CODING TEST/programmers

Day3 - 문자열 곱하기

iamyuunzo 2025. 7. 10. 11:26

📌 문제 정보

- 문제 이름 : 코딩 기초 테스트 - 문자열 곱하기

- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181940

 

 

📌 문제 요약

핵심 조건: 문자열 my_string과 정수 k가 주어질 때, my_string k번 반복한 문자열을 return

- 제한: 1 ≤ my_string의 길이 ≤ 100  /  1 ≤ k ≤ 100  (my_string은 영소문자로만 이루어짐.)

 

 

📌 내 풀이 및 코드

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();
    }
}

- 처음에 for (int i=1; i<my_string.length(); i++) { sb.append(k); } 이런식으로 적었는데 에러가 나서 힌트 봄.

- k번 my_string을 반복해야하는데 my_string의 문자열 길이만큼 k를 붙이는 이상한 코드를 만들어버림. (반대로 생각함.)

 

 

📌 다른 사람들 풀이

// 1
return my_string.repeat(k);


// 2
String answer = "";
for (int i = 0; i < k; i++) {
    answer += my_string;
}
return answer;

<-- 다른 풀이 요약 -->

- 1 : 자바 11 이상에서만 지원함. StringBuilder랑 같은 동작을 하고 한 줄이라 간단함.

- 2 : + 연산 누적 (+=) => String은 불변인데 반복할수록 새로운 String 객체를 계속 생성하기 때문에 길면 느려짐.

항목  1️⃣ StringBuilder (내 코드) 2️⃣ String.repeat  3️⃣ +=
문법 StringBuilder.append() + for repeat(k) String + +=
자바 버전 Java 8~ 최신 다 됨 Java 11 이상 Java 8~ 최신 다 됨
성능 빠름 (가장 안전) 빠름 (내부적으로 동일) 느림 (길면 차이 큼)
가독성 표준적 제일 간결 짧으면 직관적
장점 환경 가리지 않음 한 줄 코드 짧음
단점 한 줄보다 길다 Java 8 환경이면 못 씀 대용량에선 비효율적



📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** String.repeat() **

- 자바 11 이상에서 새로 추가된 String 메서드

- "문자열".repeat(n) 하면 문자열을 n번 반복한 새 문자열을 만들어서 반환함.

- 사실상 StringBuilder로 반복문을 돌려서 붙이는걸 Java 자체에서 대신 해주는 것임. (for + append랑 결과가 똑같음)

- 고정된 문자열 패턴 반복, 출력 포맷, 단순 반복에 사용하기 좋음.

// 기본 사용법
String s = "hi";

String result = s.repeat(3); // "hihihi"
System.out.println(result);


// 예시
System.out.println("*".repeat(5)); // "*****"
System.out.println("abc".repeat(2)); // "abcabc"
System.out.println("A".repeat(0)); // ""