반응형
[알고리즘] 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값만 가져오게 하면 더욱 깔끔한 코드가 될 것이다.
반응형
'CS > Algorithm' 카테고리의 다른 글
[알고리즘] 1406 에디터 (0) | 2018.03.10 |
---|---|
[알고리즘] 10799 쇠막대기 (0) | 2018.03.08 |
[BFS] 백준 2606 바이러스 (0) | 2018.01.14 |
[알고리즘] for문 이용하기2 (0) | 2017.10.21 |
[알고리즘] for문 사용해보기 (0) | 2017.10.20 |
댓글