멍두의 개발새발
[프로그래머스] 햄버거 만들기 in Java 본문
반응형
📍 문제
https://school.programmers.co.kr/learn/courses/30/lessons/133502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📍 문제설명
햄버거는 1 2 3 1 의 stack이 쌓이면 만들 수 있다.
이 때 1 2 2 3 3 1 이면 햄버거를 만들 수 없다.
무조건 1 2 3 1 로 쌓여야지만 만들 수 있다.
📍 코드
1. 들어오는 값을 stack에 쌓는다
2. stack 사이즈가 4이상이고, 제일 위에 값이 1이면 햄버거를 만들 수 있는지 검사한다.
4 이상인게 핵심! 빈 stack을 검사하지 않도록 해야한다
3. 1 3 2 1 로 저장되어 있는지 확인하고 만약 그렇다면 stack에서 4개를 모두 꺼낸다.
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < ingredient.length; i++){
stack.push(ingredient[i]);
//stack 사이즈가 4이상이고 제일 위에 값이 1이면 검사해보기
if(stack.size() >= 4 && stack.peek() == 1){
//stack이 1321이면 햄버거 만들기 가능
if(stack.get(stack.size()-1) == 1 &&
stack.get(stack.size()-2) == 3 &&
stack.get(stack.size()-3) == 2 &&
stack.get(stack.size()-4) == 1){
stack.pop();
stack.pop();
stack.pop();
stack.pop();
answer++;
}
}
}
return answer;
}
}
📍 틀린 이유
stack인데 1 1 2 2 3 3 1 1 이런 식으로 들어와도 만들 수 있다고 오해하여 stack을 앞의 값을 검사해서 앞에 1 이 있으면 2를 넣고 2가 있으면 3을 넣고 이런 식으로 stack을 쌓았다.
이 문제는 재료가 쌓이고 꺼내는 것 이므로 들어오는 대로 다 스택에 쌓고 꺼내보는 식으로 풀어야한다.
항상 느끼는 거지만 나는 쉽게 풀려고 하다가 오히려 더 코드를 복잡하게 짜게되는 경향이 있는 것 같다
직관적이게 풀 수 있도록 노력하자
📍 기억할 것
stack.get(인덱스) : list처럼 꺼내볼 수 있다.
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] - 완주하지 못한 선수 in Java (getOrDefault()) (1) | 2024.07.04 |
---|---|
[프로그래머스] 성격 유형 검사하기 in Java (0) | 2024.07.01 |
[프로그래머스] 크레인 인형뽑기 게임 in Java (1) | 2024.06.28 |
[프로그래머스] 콜라츠 추측 in Java (1) | 2024.05.05 |