휴 또 간만에 어렵지 않게 풀었다... 스택이랑 큐 사용하는 문제들이 대체로 풀기 재밌는 것 같당
그리고 처음에 String[]으로 풀었는데 채점 결과를 보니 메모리 사용량이 꽤 커서 char array로 바꿔서 다시 제출해봤지만 큰 차이가 나지는 않았다! (위에 제출한 게 char array)
import java.io.*;
import java.util.Arrays;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
char[] inputs = br.readLine().toCharArray();
char[] result = new char[inputs.length];
String answer;
br.close();
Arrays.sort(inputs);
Stack<Character> stack = new Stack<>();
int j = 0;
for (int i = 0; i < inputs.length; i++) {
if (!stack.empty() && inputs[i] == stack.peek()) {
char pop = stack.pop();
result[j] = result[result.length - 1 - j] = pop;
j++;
} else {
stack.push(inputs[i]);
}
}
if (stack.empty()) {
answer = new String(result);
} else if (stack.size() == 1) {
result[j] = stack.pop();
answer = new String(result);
} else {
answer = "I'm Sorry Hansoo";
}
bw.write(answer);
bw.flush();
bw.close();
}
}