Stack_괄호 밖 문자만 출력하기
✅ 입력된 문자열에서 괄호 사이에 존재하는 문자를 제거하고 남은 문자만 출력하세요
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Main {
public String solution(String input){
String answer= "";
Stack<Character> stack= new Stack<>();
for(char c: input.toCharArray()){
if(c==')') {
while(stack.pop() !='('); // (을 만나기 전까지 다 지우기
}
else stack.push(c);
}
for(int i=0; i<stack.size(); i++){ //괄호 밖 문자들을 answer에 추가
answer += stack.get(i);
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc= new Scanner(System.in);
String input= sc.next();
System.out.print(T.solution(input));
}
}
//⭐️input:
//(A(BC)D)EF(G(H)(IJ)K)LM(N)
//⭐️output:
//EFLM
)
이 아니면 일단 stack에 추가한다.- 계속 추가하다가
)
을 만나면)
의 짝궁(
까지 모두 삭제 - 그러면 stack에 괄호 밖에 있는 문자만 남는다.
- 이 문자들을 answer에 추가
🔵 ThingsILearned
✔️ stack.size()
✔️ stack.get(i)
✔️ while(stack.pop() !='(');
stack.pop()
한게 (
이 아닌 동안 계속 pop
따라서 pop
은 지우기 뿐만 아니라 지운 값을 return 한다.
예를 들어, stack이 있을 때 pop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Stack<Character> stack= new Stack<>();
stack.push('A');
stack.push('B');
//pop은 지우기 뿐만 아니라 지운 값을 return한다.
stack.pop(); //return B
Stack<Character> stack= new Stack<>();
stack.push('(');
stack.push('A');
stack.push('B');
stack.push(')');
for(int i=0; i<stack.size(); i++){
if( stack.get(i) ==')') {
System.out.println(stack.pop()); // B
}
}
🟢 More Simple Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Main {
public String solution(String input){
String answer= "";
Stack<Character> stack= new Stack<>();
for(char c: input.toCharArray()){
if(c== '(') stack.push(c);
else if(c==')') stack.pop();
else{
if(stack.isEmpty()) answer += c;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc= new Scanner(System.in);
String input= sc.next();
System.out.print(T.solution(input));
}
}
- stack에
'('
를 넣는다. - 그리고
')'
를 만나면'('
를 지운다. - 앒파벳을 만나면 stack에는 아무것도 넣지 않는다.
- 다만 stack이 비었는지 안 비었는지 확인하고, 비었다면 그 다음 오는 문자를 answer에 추가한다.
This post is licensed under CC BY 4.0 by the author.