[Programmers] Lv1 햄버거 만들기 Java

2023. 2. 4. 17:51CS/자료구조 & 알고리즘

728x90

문제 출처

[프로그래머스 코딩 테스트 연습]

https://school.programmers.co.kr/learn/courses/30/lessons/133502

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

이 문제는 스택을 이용한다면 쉽다.

다음은 스택에 쌓이는 과정을 그림으로 그린것이다.

그림을 보면 알듯이 검사에 성공을 한다면 next index를 변경함에 따라 이전에 쓰여있던것은 무시하는 게 가능해진다.

여기서는 stack을 pop 즉 꺼냈을때를 index로 변경하는 것으로 했다고 볼 수 있다.

 

소스 코드

public class Solution {

    public boolean isHamburger(int[] stack, int i) {
        return stack[i - 1] == 1 && stack[i - 2] == 3 && stack[i - 3] == 2 && stack[i - 4] == 1;
    }

    public int solution(int[] ingredient) {

        int[] stack = new int[ingredient.length];

        int count = 0;
        int index = 0;

        for (int i : ingredient) {
            stack[index++] = i;
            if (index >= 4 && isHamburger(stack, index)) {
                index -= 4;
                count++;
            }
        }

        return count;
    }
}
728x90