말하는 컴공감자의 텃밭

프로그래머스 햄버거 만들기 <7점>- 자바(java) Stack 본문

알고리즘/Programmers - Java

프로그래머스 햄버거 만들기 <7점>- 자바(java) Stack

현콩 2023. 6. 23. 21:10
728x90

프로그래머스 햄버거 만들기
햄버거는 와퍼지

처음에 문제를 대충읽고, 너무 단순하네 했다가 재료를 사용하면 그 쪽은 공백으로 처리를 해야해서 Stack을 떠올렸다.

햄버거도 스택처럼 쌓아야하니까

스택 자료구조에서는 push pop get 등을 사용했다

. 간단한 예제는 아래와 같습니당

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Stack<Integer> stack = new Stack<Integer>();
stack.push(10);
stack.push(20);
int element = stack.get(stack.size() - 2); // 두번째인 20 출력
 
Stack<Integer> stack = new Stack<Integer>();
stack.push(10);
stack.push(20);
int element = stack.get(1); // 1번째 위치인 10 출력
 
Stack<Integer> stack = new Stack<Integer>();
stack.push(10);
stack.push(20);
int size = stack.size(); // 사이즈는 2
 
Stack<Integer> stack = new Stack<Integer>();
stack.push(10);
stack.push(20);
 
Stack<Integer> stack = new Stack<Integer>();
stack.push(10);
stack.push(20);
int topElement = stack.pop(); // 20 제거.
 
cs

 

완성된 코드

 

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
import java.util.*;
 
class Solution {
    public int solution(int[] ing) {
        int answer = 0;
        Stack<Integer> st = new Stack<Integer>();
 
        for (int a : ing) {
            st.push(a);
 
            if (st.size() >= 4) { // 스택에 4개이상 재료가 있으면.
                if (st.get(st.size() - 1== 1 
                        && st.get(st.size() - 2== 3
                        && st.get(st.size() - 3== 2
                        && st.get(st.size() - 4== 1) {
 
                    answer++;
                    for (int i = 0; i < 4; i++) {
                        st.pop(); // 재료 팝팝
                    }
                }
            }
        }
 
        return answer;
    }
}
 
cs
728x90
Comments