제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
SWEA 1256 K번째 접미어입니다.

 

해당 문제도 솔직히 효율적인 코드인지는 잘 모르겠습니다만, 제가 활용한 알고리즘을 정리하겠습니다.

포인트

Java의 substring() method를 활용하여, 접미어를 구하고, Collections.sort를 진행합니다.

그 이후 k번째 접미어를 찾아줍니다.

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Q1256 {
    private static int tc, K;
    private static List<String> postfix;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        tc = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        for (int t = 1; t <= tc; t++) {
            K = Integer.parseInt(br.readLine());
            String line = br.readLine();

            postfix = new ArrayList<>();
            for (int i = 0; i < line.length(); i++) {
                postfix.add(line.substring(i));
            }

            Collections.sort(postfix);

            sb.append("#").append(t).append(" ")
                    .append(postfix.size() >= K ? postfix.get(K-1) : "none").append("\n");
        }
        System.out.println(sb);
    }
}

코드 설명

postfix = new ArrayList<>();
for (int i = 0; i < line.length(); i++) {
    postfix.add(line.substring(i));
}

Collections.sort(postfix);
  • index가 i부터인 substring을 postfix에 넣어주고, 정렬을 진행해줍니다.
  • 그 이후 k번째 접미어를 찾고 만약 없으면 none을 반환해줍니다.

+ Recent posts