문제 내용은 입력으로 텍스트를 받아서 3 부분으로 나눠준 뒤(각 부분은 길이가 최소 1 이상), 나눠준 단어들을 뒤집고 이후 합쳐서, 이런 방식으로 만들 수 있는 텍스트 중 사전 순으로 가장 먼저 오는 값을 출력해줘야 한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
StringBuilder sb = new StringBuilder();
TreeSet<String> set = new TreeSet<>();
for (int i = 1; i <= input.length() - 2; i++) {
for (int j = i + 1; j <= input.length() - 1; j++) {
sb.setLength(0); // 초기화
sb.append(new StringBuilder(input.substring(0, i)).reverse());
sb.append(new StringBuilder(input.substring(i, j)).reverse());
sb.append(new StringBuilder(input.substring(j)).reverse());
set.add(sb.toString());
}
}
System.out.println(set.first());
}
}
문제를 풀어보자면 For 문을 돌리면서 조합할 수 있는 모든 경우의 수를 찾되, TreeSet에 넣어주면 자동으로 오름차순으로 정렬되기 때문에 모든 경우의 수를 다 Set에 넣고 가장 처음 값을 꺼내 출력하기만 하면 끝이다.
Leave a Reply