https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18KWf6ItECFAZN
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문자열을 잘라서 저장해둔뒤, 정렬 후 출력만 하면 되는 문제로
substring이랑 treeset을 활용하면 쉽게 풀 수 있는 문제였다.
처음에 input 값을 받는 과정에서 main에서 T값을 입력 받은뒤
테스트 케이스마다 pre()함수를 불러 K와 input String 값을 입력받는 식으로 구현했는데,
K값에 input String값이 자꾸 들어가서 원인을 못 찾다가 pre() 함수 안에 T까지 입력받는 식으로 구현했더니
제대로 값이 입력되었다. 사실 해결하고 나서도 무슨 차이인지 아직까지는 모르겠다.
import java.io.*;
import java.util.*;
public class swea1257 {
static int x, T, K;
static String input, output;
static TreeSet<String> list;
static StringBuilder sb;
public static void showString() {
int i, j;
String str;
for (i = 0; i < input.length(); i++) {
for (j = i + 1; j <= input.length(); j++) {
str = input.substring(i, j);
list.add(str);
}
}
for (i = 0; i < K; i++) {
output = list.pollFirst();
}
if (output == null) {
output = "none";
}
sb.append("#").append(x).append(" ").append(output).append('\n');
}
public static void pre() throws IOException {
int i, j;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
T = Integer.parseInt(br.readLine());
for (x = 1; x <= T; x++) {
K = Integer.parseInt(br.readLine());
input = br.readLine();
list = new TreeSet<>();
showString();
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
pre();
System.out.println(sb);
}
}
'알고리즘 > 알문풀(백준, 프로그래머스, 코드트리)' 카테고리의 다른 글
[알고리즘] BOJ 18185 라면 사기(Small) (JAVA) (1) | 2023.10.11 |
---|---|
[알고리즘] BOJ 15486 퇴사 2 (JAVA) (0) | 2023.10.01 |
[알고리즘] BOJ 14500 테트로미노 (JAVA) (0) | 2023.09.28 |
[알고리즘] BOJ 2447 별 찍기-10 (JAVA) (0) | 2023.09.17 |
[알고리즘] BOJ 1074 Z (JAVA) (0) | 2023.09.17 |
댓글