CS/Algorithm
[알고리즘] 9012 괄호
별토끼.
2018. 3. 8. 16:40
반응형
[알고리즘] 9012 괄호
https://www.acmicpc.net/problem/9012
- ( 가 나오면 스택에 (를 넣는다
- ) 가 나올 경우
- 스택에 (가 있을 경우 pop으로 뺀다.
- 스택에 (가 없을 경우 break로 for문을 멈춘다.
- 구현 코드
package algorithm_basic;
import java.util.Scanner;
import java.util.Stack;
public class q_9012 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
scan.nextLine();
String[] line=new String[num];
for(int i=0;i<num;i++) {
line[i]=scan.nextLine();
}
// num 회 회전
for(int i=0;i<num;i++) {
// 1. i번째 String의 길이만큼 회전
// 2. 회전이 끝나면 YES
// 3. ( 일 경우, push
// 4. ) 일 경우, stack이 null 아닐 경우 - pop
// 4. )이면서 Stack이 null 일 경우, NO
// 5.
Stack<String> stack = new Stack<>();
for(int j=0;j<line[i].length();j++) {
char letter=line[i].charAt(j);
String letterString=String.valueOf(letter);
if (letterString.equals("(")) {
stack.push(letterString);
}else if(letterString.equals(")")){
if(stack.empty()) {
System.out.println("NO");
break;
}else {
stack.pop();
}
}
if(j==line[i].length()-1 && stack.empty()) {
System.out.println("YES");
}else if(j==line[i].length()-1 && !stack.empty()){
System.out.println("NO");
}
}
}
}
}
[Review]
- 알고리즘 구현시 stack을 사용하지만 cnt함수로 더욱 간단히 구현할 수 있다.
- Main에서는 return값만 가져오게 하면 더욱 깔끔한 코드가 될 것이다.
반응형