Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 9012] 괄호 본문
반응형
스택 관련 문제이다.
스택에 '(' 기호가 들어오면 모두 push하고, ')' 기호가 들어오면 스택의 top이 '(' 일때 push 한다.
입력이 끝났을때 스택이 비어있으면 VPS 조건이 성립한다.
public class Main {
Node head;
int size = 0;
class Node {
Node prev;
Object value;
Node(Object value) {
this.value = value;
}
}
public void push(Object value) {
Node node = new Node(value);
if(size >= 1)
node.prev = head;
head = node;
size++;
}
public Object pop() {
if(size == 0) {
return -1;
}
Node temp = head;
head = head.prev;
size--;
return temp.value;
}
public Object top() {
if(size == 0) {
return -1;
}
return head.value;
}
public int size() {
return size;
}
public boolean isEmpty() {
if(size == 0) return true;
return false;
}
public void clear() {
head = null;
size = 0;
}
public String toString() {
String str = "top [";
Node temp = head;
for(int i=0; i<size; i++) {
str += temp.value;
if(i != size-1) {
temp = temp.prev;
str += ", ";
}
}
return str += "] bottom";
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
Main s = new Main();
while(t-->0) {
String temp = sc.next();
String[] ps = new String[temp.length()];
for(int i=0; i<ps.length; i++)
ps[i] = String.valueOf(temp.charAt(i));
for(int i=0; i<ps.length; i++) {
if(ps[i].equals("("))
s.push(ps[i]);
if(ps[i].equals(")")) {
if(s.top().equals("("))
s.pop();
else {
s.push("fail~~");
break;
}
}
}
if(s.isEmpty())
System.out.println("YES");
else System.out.println("NO");
s.clear();
}
sc.close();
}
}
직접 구현한 스택을 수정해가며 했다.
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 1929] 소수 구하기 (0) | 2019.04.04 |
---|---|
[백준 11052] 카드 구매하기 (0) | 2019.04.03 |
[백준 10828] 스택 (0) | 2019.04.03 |
[백준 11727] 2xn 타일링 2 (0) | 2019.04.02 |
[백준 11726] 2xn 타일링 (0) | 2019.04.02 |
Comments