본문 바로가기

알고리즘/DataStructure3

후위-표기식 후위 표기식 백준 1918번 문제https://www.acmicpc.net/problem/1918  1. 문제   2. 문제 풀이2.1 아이디어중위 표기식을 후위 표기식으로 변경하기 위해서는 먼저 연산에 따라 괄호를 묶어주어야 한다.예를 들어 다음과 같은 수식이 있다고 하자. A+Bx(C-D)/E 이 수식을 연산의 우선순위에 따라 괄호로 묶어주면 다음과 같은 형태가 된다. (A+((Bx(C-D))/E)) 왼쪽부터 시작해서 연산의 우선순위를 기준으로 괄호로 묶어주었다.이제 이 식을 괄호에 따라서 후위표기식으로 변경하면 다음과 같다. ABCD-xE/+ 중위 표기식을 후위 표기식으로 바꾸는 과정에는 규칙이 있다. 1. 피연산자는 왼쪽부터 순차적으로 출력된다. - 피연산자의 순서는 바뀌지 않는다 연산자의 위치만.. 2024. 7. 30.
이중 우선순위 큐 이중 우선순위 큐백준 7662번 문제https://www.acmicpc.net/problem/7662  1. 문제  2. 풀이아쉽게도 JAVA에는 이중 우선순위 큐가 없기 때문에 직접 만들어줘야 한다.다행히 우선순위 큐는 존재하기 때문에 이를 토대로 이중 우선순위 큐를 구현하면 된다. 먼저 우선순위 큐가 존재하기 때문에 최댓값과 최솟값에 대한 두 개의 우선순위 큐를 만들다.이중 우선순위 큐에 값을 넣을 때는 두개의 우선순위 큐에 모두 값을 넣어준다. [이중 우선순위 큐 값 추가 예시]public static class DualPriorityQueue{ Queue maxQueue = new PriorityQueue(Collections.reverseOrder()); Queue minQueue =.. 2024. 7. 3.
크-게 만들기 크게 만들기 백준 2812번 문제 https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 1. 문제 2. 풀이 방법 2.1 내림차수 만들기 2.1.1 개념 주어진 숫자에서 K개를 지웠을 때 가장 큰 수가 되게 하려면 숫자의 앞자리(왼쪽)가 가장 커질 수 있는 방향으로 수를 지우면 될 것이다. 즉 특정 자릿수를 지워 숫자를 내림차순이 되는 형태로 만들면 가장 큰 수가 될 수 있다. 숫자를 내림차수로 만드는 데에는 스택을 활용할 수 있다. 다음과 같이 예시가 주어졌다고 하자 10자리, 지울 수의 개수 = 4, 숫자 = 4177252.. 2023. 5. 21.