목록스택 (5)
Dev.baelanche
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dFQ0z8/btqwpEf2CV4/e9xJEcD2nZhmWTrga9MRP1/img.png)
문자열에서 (, ), [, ] 말고는 신경쓰지 않는다. 1. (, [ 문자는 스택에 바로 담는다. 2. ) 문자는 스택의 top이 (이면 둘이 합쳐서 pop한다. 2-1. ] 문자는 스택의 top이 [이면 둘이 합쳐서 pop한다. 3. ), ] 문자가 들어왔을때 스택이 비어있거나 탑이 자신의 쌍이 아니면 균형이 안잡힌 문자열이다. 4. 문자열 점검이 끝났을때 스택이 비어있어야 한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true) { String str = sc.nextLine(); if(str.equals(".")) break; Stack s = new S..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1V75x/btqwqk2s89l/4asRfqu6n78i4ZPOSRX3qK/img.png)
짱짱 쉬운 스텍 문제이다. 설명은 생략하겠다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int k = sc.nextInt(); Stack s = new Stack(); while(k-->0) { int n = sc.nextInt(); if(n != 0) s.push(n); else s.pop(); } int sum = 0; while(!s.isEmpty()) { sum += s.pop(); } System.out.println(sum); } }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/7c723/btqu0TRQlyu/MV9RGmb2IgTdKkb35egIpK/img.png)
다음과 같은 규칙을 따라 스택으로 구현해야 한다. 1. A, B, C .... 등의 피연산자는 곧바로 출력한다. 2. +, - 연산자는 push 한다. - 그렇지 않을때는 위 조건이 참이 될때까지 스택을 pop 하며 출력한다. 3. *, / 연산자는 push 한다. - 그렇지 않을때는 위 조건이 참이 될때까지 스택을 pop 하며 출력한다. 4. ( 기호는 push 한다. 5. ) 기호는 스택의 탑이 '(' 이 될때까지 스택을 pop 하며 출력한다. - '(' 기호는 pop 하지만 출력하지는 않는다. 6. 위 절차가 끝나고 스택에 값이 남아있다면 모두 pop 하며 출력한다. public class Main { public static void main(String[] args) { Scanner sc = ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lg2r1/btqt7SeFlYr/nCmwbK7fKkDACdQAKHiUy0/img.png)
스택 관련 문제이다. 스택에 '(' 기호가 들어오면 모두 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) { retu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KADqI/btqt8mT741a/yd6k7JDODKQWtVg7BMYW8k/img.png)
스택으로 입출력하면 되는 간단한 문제이다. 본 문제에서는 직접 구현한 스택으로 풀었다. import java.util.Scanner; 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 = he..