[코테/Java/Lv.0] 문자열 반복 출력과 .repeat() 메서드

문자열 반복해서 출력하기

문제

문자열 str과 정수 n이 주어집니다. str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해보세요.

 

내 코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int n = sc.nextInt();
        for (int i=0; i<n; i++) {
            System.out.print(str);
        }
    }
}

 

풀이

반복문을 사용했다. i가 0부터 1씩 증가하며 str을 출력한다. i<n까지 반복한다.

 

다른 사람 코드

        System.out.println(str.repeat(n));​

repeat()메서드를 사용했다.


String.repeat() 메서드 정리

- Java 11부터 추가
- 문자열을 지정한 횟수만큼 반복한 새 문자열 반환
- 구문: str.repeat(int count)

 for문 대비 장점

  1.   가독성
  2.   성능 최적화
    - 필요한 총 크기를 미리 계산하여 한 번만 메모리 할당 : for문은 매 반복마다 문자열 연결 시 새 객체 생성 (String 불변성)
    - 내부적으로 최적화된 알고리즘인 `Arrays.fill()` 등 사용
  3.  안전성
    - 음수면 자동으로 `IllegalArgumentException` 발생
    - count가 0이면 빈 문자열 반환
  4. 유지보수
    - 반복 로직이 캡슐화되어 실수 방지 (반복 변수, 조건문 오류 없음)

성능 비교

기존 for문을 사용한 코드
.repeat() 를 사용한 코드

> repeat()를 사용했을 때와 기존 코드의 성능이 확연히 차이가 남


참고:

 

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#repeat(int)

 

String (Java SE 11 & JDK 11 )

Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum

docs.oracle.com