[프로그래머스] 햄버거만들기

홈런볼·2023년 7월 11일
0

프로그래머스

목록 보기
12/36

문제링크

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

문제접근

재료를 순차적으로 접근하면서 햄버거의 재료(1,2,3,1) 이 연속적으로 있는지 판별하기 위해 스택 자료구조를 이용

  1. 햄버거 재료가 담긴 배열과 스택을 선언
  2. 재료 배열을 순회하면서 stack에 재료를 담아줌
  3. 스택이 4이상이면 현재 위치로 부터 4개의 요소가 햄버거 재료와 동일한지 비교한다
  4. 동일한 경우에는 answer를 증가시켜주고, pop 연산을 이용해 stack에서 요소를 빼줌

코드

import java.util.Stack;

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;

        int[] hb = new int[]{1,2,3,1};
        Stack<Integer> stack = new Stack<>();

        for(int i=0;i<ingredient.length;i++){
            stack.push(ingredient[i]);
            if(stack.size()>=4){
                int size = stack.size();
                if(stack.get(size-1)== hb[3]&& stack.get(size-2)==hb[2] && 
                        stack.get(size-3) == hb[1] && stack.get(size-4)==hb[0]){
                    answer++;
                    stack.pop();
                    stack.pop();
                    stack.pop();
                    stack.pop();
                }
            }
        }
        return answer;
    }
}

정확성 테스트

후기

정확성 테스트 시 1초 이내의 테케와 65초가 넘어가는 테케가 있어 테케6의 테스트 값을 찾아보고 실행시간을 줄여야겠다.

0개의 댓글