스택 5

[BOJ] 2812. 크게 만들기

스택을 사용하는 그리디 문제였다. 이 문제는 숫자의 앞에서부터 스택에 집어넣으며 순서를 지키며 가장 큰 수를 만드는 문제이다. 즉 다음과 같은 로직을 가진다. 현재 스택에 집어넣어야할 숫자에 대해서 만일 지울 수 있는 횟수가 남아있고, 스택의 top 값이 현재 숫자보다 작다면 스택의 top을 제거하는 것을 반복하고 현재 숫자를 스택에 push해주는 원리이다. 그후 최종적으로 N-K만큼의 길이를 스택의 bottom에서부터 보여주는 방식으로 해결할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ..

Algorithm 2021.05.15

[BOJ] 1918. 후위 표기식

스택을 이용하는 문제이다. 이 문제는 스택을 활용하여 연산자들을 스택에 저장하면서 수식을 후위표기식으로 출력하는 문제였다. 스택을 보다 자유롭게 활용할 수 있는 deque를 사용하였다. 이 문제에서는 연산자들마다 우선순위가 있기에 그것을 고려하여 스택을 탐색하는 과정이 필요했다. 입력을 하나씩 확인하면서 다음과 같은 규칙을 적용하였다. 1. A~Z의 경우 바로 출력 2. (의 경우 바로 스택에 넣기 3. )의 경우 스택에서 (를 만나기 전까지 출력 4. +,-의 경우 우선순위가 *,/보다 낮기때문에 스택이 비거나 (를 만나기전까지 스택에서 빼서 출력 5. *,/의 경우 우선순위가 +,-보다 높기때문에 스택이 비거나 +,-,(를 만나기전까지 스택에서 빼서 출력 1 2 3 4 5 6 7 8 9 10 11 1..

Algorithm 2021.05.12

[BOJ] 4889. 안정적인 문자열

스택을 이용하는 괄호의 쌍 문제이다. 이문제는 남은 괄호를 처지하는 횟수를 카운팅해주는 문제이기에 조금 특별한 방식으로 접근하였다. 스택에다가 오직 여는 괄호 { 만을 가지고 있도록 하는방법이다. 만일 } 가 스택에 들어올 차례일때 스택이 비어있다면 카운팅을 해주고 { 를 넣어주는 방식으로 접근하여 풀었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 package study4; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; public cl..

Algorithm 2020.07.26

[BOJ] 6198. 옥상 정원 꾸미기

2493번 탑과 비슷한 스택을 사용하는 문제이다. 문제를 접근할때 현재 빌딩에서 몇개를 볼수있느냐가 아니라 현재 빌딩이 몇개의 빌딩에서 보여지냐 를 기준으로 접근하였다. 그래서 스택을 이용하여 순서대로 입력을 받았다. 그리고 입력을 받은 순간 만일 스택의 top에 있는 빌딩의 높이가 현재 들어온 빌딩보다 높다면 그순간의 스택사이즈를 answer에 추가해주었고, 만일 현재 들어온 빌딩이 더 크다면 스택의 top에 위치한 빌딩을 pop해주었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package study4; import java.io.BufferedReader; import ja..

Algorithm 2020.07.24

[BOJ] 2493. 탑

스택을 이용하여 비교하는 문제이다. 탑의 첫번째 부터 확인하며 스택이 비어있다면 0(벽), 만일 스택이 안비어있다면 스택의 top이 현재보다 크다면 top의 인덱스 출력 그렇지 않다면 top을 pop해주는 것을 반복해주며 최종적으로는 push를 계속 해주는 과정을 반복해주었다. 로직을 천천히 생각해봐야할 필요가 있는 문제였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 package selfStudy.chap04; import java.io.BufferedReader; import java.io.Inpu..

Algorithm 2020.04.07