1 분 소요



https://www.acmicpc.net/problem/2675



📌 문제

문제 유형

  • 구현
  • 문자열


문제 설명

  • 입력으로 반복 횟수와 문자열이 주어짐
  • 문자열의 각 문자를 반복 횟수만큼 반복해서 출력


입출력 예시

입력

2
3 ABC
5 /HTP

출력

AAABBBCCC
/////HHHHHTTTTTPPPPP



🔍 문제 풀이

  • 각 테스트 케이스마다 문자 하나를 R번 반복해서 출력
  • 반복은 charAt()을 이용해 구현


charAt() vs toCharArray()

거의 모든 경우에 charAt()toCharArray()는 상호 대체 가능하다.

하지만 toCharArray()문자열을 배열로 복사하므로, 문자열이 매우 길 경우 성능과 메모리 측면에서 불리할 수 있다.

String s = "abc";

// 1. charAt()
for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    System.out.println(c);
}

// 2. toCharArray()
for (char c : s.toCharArray()) {
    System.out.println(c);
}



💻 전체 코드

charAt() 사용

package org.example;

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());

        for (int i = 0; i < t; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            String input = st.nextToken();

            StringBuilder sb = new StringBuilder();
            for (int j = 0; j < input.length(); j++) {
                char ch = input.charAt(j);
                for (int k = 0; k < n; k++) {
                    sb.append(ch);
                }
            }

            System.out.println(sb.toString());
        }
    }
}


toCharArray() 사용

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());

        for(int i=0; i<t; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            int num = Integer.parseInt(st.nextToken());
            String str = st.nextToken();


            StringBuilder sb = new StringBuilder();
            for (char c : str.toCharArray()) {
                for (int j = 0; j < num; j++) {
                    sb.append(c);
                }
            }
            System.out.println(sb.toString());
        }
    }
}



💭 배운 점

  • 전체 문자를 반복할 때 toCharArray() 대신 charAt()을 사용하면 별도 배열 없이 바로 인덱스로 접근할 수 있어 더 가볍게 구현할 수 있다는 점을 배웠다.
  • 속도가 중요한 경우, charAt()을, 빠르게 구현하고 싶을 때 for-each 사용이 가능한 toCharArray()을 사용하자.



🔁 복습 템플릿

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());

        for (int i = 0; i < t; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            String input = st.nextToken();

            StringBuilder sb = new StringBuilder();
            // 문자 반복 추가



            System.out.println(sb.toString());
        }
    }
}


카테고리:

업데이트:

댓글남기기