✔ 햄버거 만들기
문제 분석하기
스택에 재료를 넣어가며 재료가 4개 이상이 되었을 때 햄버거를 만들 수 있는지 확인
손으로 풀어보기
- 스택에 재료를 하나씩 저장
- 스택의 사이즈가 4 이상이라면 햄버거를 만들 수 있는지 확인
- 햄버거 (빵, 야채, 고기, 빵) : [1, 2, 3, 1]
- 햄버거를 만들 수 있다면 햄버거의 개수를 증가시키고 스택에서 삭제
- 모든 재료를 스택에 넣을 때까지 반복
- 햄버거의 개수를 반환
슈도코드 작성하기
ingredient(재료의 정보를 나타내는 정수 배열)
answer(햄버거의 개수)
stack(재료를 순서대로 저장할 스택)
for(i -> ingredient만큼) {
stack에 i 저장
if (stack의 크기가 4 이상이라면) {
if(빵, 야채, 고기, 빵 순서인지 확인) {
햄버거의 개수 증가
stack에서 빵, 야채, 고기, 빵 삭제
}
}
}
answer 반환
코드 구현하기
/**
* 133502) 햄버거_만들기
*/
public class L061_133502 {
// ingredient(재료의 정보를 나타내는 정수 배열)
public int solution(int[] ingredient) {
// answer(햄버거의 개수)
int answer = 0;
// stack(재료를 순서대로 저장할 스택)
Stack<Integer> stack = new Stack<>();
for (int i : ingredient) {
// stack에 재료 저장
stack.push(i);
// stack의 크기가 4 이상이라면
if (stack.size() >= 4) {
int size = stack.size();
// 빵(1), 야채(2), 고기(3), 빵(1) 순서인지 확인
if (stack.get(size - 1) == 1
&& stack.get(size - 2) == 3
&& stack.get(size - 3) == 2
&& stack.get(size - 4) == 1) {
// 햄버거의 개수 증가
answer++;
// stack에서 빵, 야채, 고기, 빵 삭제
stack.pop();
stack.pop();
stack.pop();
stack.pop();
}
}
}
// answer 반환
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
L061_133502 solution = new L061_133502();
int[] ingredient = { 2, 1, 1, 2, 3, 1, 2, 3, 1 };
int result = solution.solution(ingredient);
System.out.println(result);
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[132267] 콜라 문제 (0) | 2023.12.14 |
---|---|
[133499] 옹알이 (2) (0) | 2023.12.13 |
[134240] 푸드 파이트 대회 (0) | 2023.12.12 |
[135808] 과일 장수 (0) | 2023.12.11 |
[136798] 기사단원의 무기 (0) | 2023.12.11 |