사전 순으로 앞에 있는 단어를 뒷쪽에 두고 마지막에 문자열을 reverse한다.
⇒ 1, 2, 3 과정을 거친 결과 ak+1의 위치만 변경되었다.
이 점을 문제에 적용해보자.
문자열 a1a2a3 ... ak-1akak+1에서
예시로 이해해보자.
초기문자열 ACAB에서
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
// 입력 및 전처리
String str = br.readLine();
String ans = str.substring(0, 1);
// 로직
for (int i = 1; i < str.length(); ++i) {
if (ans.charAt(i - 1) < str.charAt(i)) {
ans = str.charAt(i) + ans;
} else {
ans = ans + str.charAt(i);
}
}
// 출력
sb.append(ans);
sb.reverse();
sb.append("\n");
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}