
[한양대 HCPC 2023] Yeah, but How?
해당 문제의 핵심 풀이 방법은 다음과 같다.
위와 같은 조건을 통해 아래 가설을 만들고 적용하였다.
해당 문제의 시간 복잡도는 O(n)이다. 따라서 최대길이의 문자가 주어져도 타임아웃이 나지 않기 때문에 단순 구현 문제라고 할 수 있다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
System.out.println(Solution(input));
}
public static String Solution(String input) {
Deque<Character> stack = new ArrayDeque<>();
int inputlength = input.length();
if (inputlength == 2) {
return "(1+1)";
}
for (int i = 0; i < input.length(); i++) {
stack.offerLast(input.charAt(i));
}
boolean finish = true;
StringBuilder answer = new StringBuilder();
while(finish) {
if (stack.size() == 2) {
finish = false;
}
char L = stack.pollFirst();
char R = stack.pollFirst();
if (L == ')' && R == '(') {
answer.append(L);
answer.append('+');
}
else if (L == '(' && R == ')') {
answer.append(L);
answer.append('1');
} else {
answer.append(L);
}
stack.offerFirst(R);
if (finish == false) answer.append(R);
}
String res = String.valueOf(answer);
return res;
}
}