728x90
설명
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
남은 문자만 출력한다.
예시 입력1
(A(BC)D)EF(G(H)(IJ)K)LM(N)
예시 출력1
EFLM
풀이
여는 괄호와 알파벳은 무조건 push 한다.
스택의 제일 상단의 여는 괄호가 닫는 괄호의 짝이다.
닫는 괄호를 만났을 때는, 여는 괄호까지 pop 한다.
코드
package inflearn._5_2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class Main {
public static String solution(String str) {
String answer = "";
Stack<Character> stack = new Stack<>();
for(char x : str.toCharArray()) {
if (x == ')') {
while (stack.pop() != '('); // '(' 만날 때 까지 pop
}
else {
stack.push(x); // '('이거나 알파벳이면 push 한다.
}
}
for(int i = 0; i < stack.size(); i++) {
answer += stack.get(i);
}
return answer;
}
public static void main(String[] args) throws IOException {
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 answer = solution(str);
bw.write(answer);
bw.flush();
bw.close();
br.close();
}
}
728x90
'Coding Test Inflearn' 카테고리의 다른 글
[자료구조] 후위식 연산 (postfix) (0) | 2024.04.25 |
---|---|
[자료구조] 크레인 인형뽑기 (카카오) (0) | 2024.04.25 |
[자료구조] 올바른 괄호 (0) | 2024.04.10 |
[Two pointers] 연속된 자연수의 합 (0) | 2024.04.10 |
[복합적 문제] 연속 부분 수열 (0) | 2024.04.02 |