문제 https://leetcode.com/problems/implement-stack-using-queues/description/ 오직 두개의 queue만을 사용하여 후입선출(LIFO)의 stack을 구현하여라. 구현된 스택은 기본 스택의 함수(push, top, pop, empty)들을 지원하여야 한다. MyStack 클래스를 구현하여라. void push(int x): 스택의 끝에 x를 넣는다. int pop(): 스택의 끝 값을 지우고, 이를 반환한다. int top(): 스택의 끝 값을 반환한다. boolean empty(): 스택이 비어있으면 true를 반환하고, 아니라면 false를 반환한다. 주의 오직 큐의 표준 operation만을 사용하여라. 이는 큐의 끝에서 요소를 추가하는 push..
스택
문제 (Gold 3) https://www.acmicpc.net/problem/4933 4933번: 뉴턴의 사과 각 테스트 케이스에 대해서, 두 트리가 동등하면 true를, 아니면 false를 출력한다. www.acmicpc.net 풀이 입력 받은 값을 어떻게 트리로 만드느냐를 생각하는 것이 관건. 입력은 포스트오더(후위순회)로 주어진다고 하니 stack을 활용하여 트리 구성 후위순회로 주어진 그래프의 stack 변환 로직 1. 현재 넣으려는 노드(i)가 null이 아니고, 이미 스택에 2개 이상 쌓여있다면 2. 맨 나중에 넣은 노드(stack.pop())가 오른쪽 노드 3. 그 전에 넣은 노드(stack.pop())가 왼쪽 노드 4. right와 left노드의 부모를 현재 노드(i)로 설정 5. 현재 ..
문제 SWEA(SW Expert Academy) 1223번 계산기2 [D4] 풀이 스택을 이용하여 후위표기식을 작성/계산하는 문제 후위표기식 변환 만약 숫자일 경우, 바로 출력(여기에는 후위표기식 문자열carr에 저장)하고 연산자일 경우, 우선순위에 따라 스택에 pop/push. 스택에서 자신보다 낮은 우선순위 연산자가 나올 때까지 계속 pop하여 출력한다. 즉, 자신보다 높거나 같은 우선순위 연산자를 모두 pop 현재 문제에서는 +, *밖에 없으므로 +는 스택에 있는 모든 연산자를 출력하고, *는 peek()값이 *일 때 출력한다. 우선순위에 따른 연산자 출력 후, 자기 자신을 push 후위표기식 계산 문자열배열(carr)을 순회하며 숫자일 경우 stack에(이전과 다른 스택 사용) push하고 연산자..
문제 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net 코드(JAVA) import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuffer sb ..