📌 문제 정보
- 문제 이름 : 코딩 기초 테스트 - 문자열 곱하기
- 문제 링크: 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)); // ""'CODING TEST > programmers' 카테고리의 다른 글
| Day4 - 조건 문자열 (0) | 2025.07.11 |
|---|---|
| Day4 - 홀짝에 따라 다른 값 반환하기 (0) | 2025.07.11 |
| Day3 - 문자 리스트를 문자열로 변환하기 (0) | 2025.07.10 |
| Day3 - 두 수의 연산값 비교하기 (0) | 2025.07.10 |
| Day3 - 문자열 섞기 (0) | 2025.07.10 |
