본문 바로가기

백준 문제풀이 코드저장소/Silver

Baekjoon 21966. (중략) / Java

728x90

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

알고리즘 설명

문제 설명

  • 입력 길이가 25 이하인 경우:
    • 문자열 SSS를 그대로 출력합니다.
  • 입력 길이가 25 초과인 경우:
    • SSS의 앞에서부터 11글자, 뒤에서부터 11글자를 제외한 나머지 부분이 모두 같은 문장에 속한다면, 생략한 부분을 '...'으로 바꿔서 출력합니다.
    • 그렇지 않다면, SSS를 앞에서부터 9글자, 뒤에서부터 10글자만 남기고 중간을 '......'으로 바꿔서 출력합니다.

코드 설명

메서드 활용해서 풀자.

import java.io.*;

public class Main {
    public static int N;
    public static String s;
    public static String res = "";
    public static BufferedReader br;

    public static void main(String[] args) throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        s = br.readLine();
        sol(N, s);
        System.out.println(res);
    }

    private static void sol(int N, String s) {
        if (N <= 25) {
            // 길이가 25 이하인 경우
            res = s;
            return;
        }
        
        // 길이가 25 초과인 경우
        // 가운데 부분 (12글자부터 N-12글자까지) 추출
        String tmp = s.substring(12, N - 12);
        
        if (!tmp.contains(".")) {
            // 가운데 부분에 마침표가 없으면
            res = s.substring(0, 11) + "..." + s.substring(N - 11, N);
            return;
        }
        
        // 가운데 부분에 마침표가 있으면
        res = s.substring(0, 9) + "......" + s.substring(N - 10, N);
    }
}
반응형