백준 영어 시험

KIMYEONGJUN·2025년 12월 9일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 정답의 길이 N이 주어진다. (1 ≤ N ≤ 10000)
둘째 줄에 정답을 구성하는 알파벳이 공백 없이 소문자로 주어진다.
각 알파벳은 최대 한 번 주어진다.

모든 답안에 대해 만점을 받을 수 있는 가장 짧은 문자열을 출력한다.
가능한 가장 짧은 문자열이 여러 가지인 경우 아무거나 출력한다.

내가 이 문제를 보고 생각해본 부분

int N = Integer.parseInt(br.readLine());:
첫 번째 줄에서 입력되는 정수 N (정답의 길이)을 읽어서 N 변수에 저장한다.
String S = br.readLine();:
두 번째 줄에서 입력되는 문자열 S (정답을 구성하는 알파벳들)을 읽어서 S 변수에 저장한다.
이 S는 'a', 'b', 'c'처럼 공백 없이 붙어 있는 소문자들로 이루어져 있다.
StringBuilder sb = new StringBuilder();:
반복적으로 문자열을 이어 붙일 때는 String의 + 연산보다 StringBuilder를 사용하는 것이 훨씬 효율적이다.
StringBuilder는 가변적인 문자열을 다룰 때 성능상 이점을 가진다.
sb 이름의 StringBuilder 객체를 새로 생성한다.
for(int i = 0; i < N; i++) { sb.append(S); }:
우리는 S 문자열을 N번 반복해서 이어 붙여야 한다.
for반복문을 0부터 N-1까지 N번 실행하면서, 매 반복마다 sb.append(S)를 통해 S 문자열을 sb에 추가한다.
예를 들어, N=2, S="ba"라면, sb는 첫 번째 반복 후 "ba"가 되고, 두 번째 반복 후 "baba"가 된다.
System.out.println(sb.toString());:
모든 반복이 끝나면, StringBuilder 객체인 sb에 담긴 문자열을 toString() 메서드를 통해 String 타입으로 변환하고, 표준 출력으로 내보낸다.
이 문자열이 바로 문제에서 요구하는 "모든 답안에 만점을 줄 수 있는 가장 짧은 문자열"이 된다.
br.close();: 사용이 끝난 BufferedReader를 닫아서 시스템 자원을 해제한다.

코드로 구현

package baekjoon.baekjoon_31;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 백준 25288번 문제
public class Main1232 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine()); // 첫째 줄: N(정답의 길이)
        String S = br.readLine(); // 둘째 줄: S(정답을 구성하는 알파벳들)
        // S를 N번 반복하여 문자열을 만듭니다.
        // StringBuilder를 사용하여 효율적으로 문자열을 이어 붙입니다.
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < N; i++) {
            sb.append(S);
        }

        System.out.println(sb.toString()); // 결과 출력
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글