스택

스택

    백준 1918번 후위 표기식 [ Java ]

    1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net 머릿속으로 스택을 사용해서 푸는과정이 아직 구체적으로 그려지지 않는것 같습니다. 연습이 더 필요할 것 같네요. import java.io.*; import java.util.*; public class Main { static int priority(char ch) { switch (ch) { case '(': return 0; case '+': case '-': return 1; default: return 2; } } public static voi..

    백준 1935번 후위 표기식2 [ Java ]

    1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 후위 표기 연산을 해주는 코드를 작성했다. 연산자를 만나면 스택에 숫자를 두 개 꺼내 연산해주고 다시 집어 넣는다. 위 과정을 반복하고 마지막으로 스택에 남아있는 수를 꺼내 포맷에 맞게 출력한다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Stack stack = new Stack();..

    백준 17299번 오등큰수 [ Java ]

    17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 오큰수랑 똑같은 방식에 빈도 비교하는 배열만 추가하였습니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Stack stack = new Stack(); StringBuilder sb = new StringBuilder(); BufferedReader br = new BufferedReader(new InputS..

    백준 17298번 오큰수 [ Java ]

    17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 오른쪽에 있는 큰 수 중 가장 왼쪽에 수를 찾는건데 가장 먼저 떠오르는 방법은 현재 인덱스부터 오른쪽을 전부 검사하는 것이다. 하지만 이렇게 하면 O(n^2)의 시간복잡도가 나와서 시간초과가 나오게 된다. 스택을 이용하면 O(n)으로 풀 수 있다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Stack stack ..

    백준 17413번 단어 뒤집기 2 [ Java ]

    17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Stack stack = new Stack(); StringBuilder sb = new StringBuilder(); BufferedReader br = new BufferedReader(new InputStreamRead..

    백준 9012번 괄호 [ C, Java ]

    9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 스택에 문자를 넣다가 )를 만나면 pop을 1번 합니다. 비어있는데 )를 만나거나 문자열을 모두 돌았는데 스택에 문자가 남아있다면 잘못된 것입니다. c언어는 예전에 풀었던거고 java는 이번에 다시 풀었습니다. C언어 #include char vps[50]; int element_odd(char arr[]); int stack(char stack[]); int count(char arr[]); void clean(char arr[]..