문제
https://school.programmers.co.kr/learn/courses/30/lessons/133502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
import java.util.Stack;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int in : ingredient) {
stack.push(in);
int size = stack.size();
if (size > 3 && stack.peek() == 1 && stack.get(size - 2) == 3 && stack.get(size - 3) == 2
&& stack.get(size - 4) == 1) {
answer++;
stack.pop();
stack.pop();
stack.pop();
stack.pop();
}
}
return answer;
}
}
Stack 객체를 생성해서 들어오는 순서대로 담는다. 이 때 stack에 쌓인 크기가 3이 넘고 마지막에 들어온 데이터부터 순서가 1-3-2-1 (햄버거가 1-2-3-1로 쌓여야 하니까)이 되면 stack에서 4개를 모두 제거한다.
전달받은 배열 ingredient의 길이 n만큼 순회하므로 시간 복잡도는 O(n)이고, 선형이다.
'학습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 신고 결과 받기(java) (0) | 2023.02.02 |
---|---|
[프로그래머스] 성격 유형 검사하기(java) (0) | 2023.02.02 |
[프로그래머스] 문자열 나누기(java) (0) | 2023.02.02 |
[프로그래머스] 가장 가까운 같은 글자(java) (0) | 2023.02.02 |
[프로그래머스] 크기가 작은 부분 문자열(java) (0) | 2023.01.29 |