https://www.acmicpc.net/problem/4949
[접근]
이 문제는 9012번 문제와 살짝 비슷하다. (https://www.acmicpc.net/problem/9012) 이 문제와 다른점이 있다면 이번 문제에는 괄호의 종류가 늘었다는 것이다. 즉 신경써줘야 할 점이 생긴것이다.
1) ' ( [ ) ] ' 이와 같이 괄호가 성립이 안되는 문장이면 안된다.
-> '(' or '[' 는 오는 순서대로 저장시킨다. ')' or ']' 를 만나면 스택의 가장 위에 있는 문자와 비교하여 괄호의 짝이 맞는지 비교해야한다.
2 ) ' . ' 이 있는 문장도 옳은 문장이다.
[코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main4949 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
StringBuilder sb = new StringBuilder();
while (true){
int index=0; // stack 위치를 저장하기 위한 변수
char [] stack = new char[100];
str = br.readLine();
if (str.equals(".")){ // "." 입력의 끝
break;
}
for (Byte b : str.getBytes()){
if(b == '('){
stack[index] =')';
index++;
}else if(b == '['){
stack[index] = ']';
index++;
}
else if (b == ')'|| b==']'){
if (index > 0 && stack[index-1]==b){
index--; //pop
}else{
index=-1;
break;
}
}
}
if (index ==0){
sb.append("yes\n");
}else {
sb.append("no\n");
}
}
System.out.print(sb);
}
}
'Baekjoon' 카테고리의 다른 글
[Java] 백준 2751번 : 수 정렬하기 2 (0) | 2022.01.15 |
---|---|
[Java] 백준 10816번 : 숫자 카드 2 (0) | 2022.01.15 |
[Java] 백준 1874번 : 스택 수열 (0) | 2022.01.15 |
[Java] 백준 10828번 : 스택 (0) | 2022.01.14 |
[Java] 백준 9012번 : 괄호 (0) | 2022.01.14 |