[Programmers] 햄버거 만들기 - JAVA

최영환·2022년 11월 21일
0

Programmers

목록 보기
6/43
post-thumbnail

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

import java.util.*;

class Solution {
	public int solution(int[] ingredient) {
		int answer = 0;
        // 햄버거 재료 리스트
		ArrayList<Integer> ingredients = new ArrayList<Integer>();
        // 햄버거가 포장되는 순서 리스트 [1, 2, 3, 1]
		ArrayList<Integer> seq = new ArrayList<Integer>();
		seq.add(1);
		seq.add(2);
		seq.add(3);
		seq.add(1);

        // 재료 리스트에 재료 추가
		for (int i = 0; i < ingredient.length; i++) {
			ingredients.add(ingredient[i]);

			// 현재 들어간 재료가 4개 이상이면
			if (ingredients.size() >= 4) {
				// 임시 리스트에 현재까지의 재료를 모두 넣음
				ArrayList<Integer> temp = new ArrayList<Integer>();
				temp.add(ingredients.get(ingredients.size() - 4));
				temp.add(ingredients.get(ingredients.size() - 3));
				temp.add(ingredients.get(ingredients.size() - 2));
				temp.add(ingredients.get(ingredients.size() - 1));

				// 정답 리스트와 비교하여 같으면 answer 증가 후 재료 리스트에서 제거
				if (temp.equals(seq)) {
					answer++;
					ingredients.remove(ingredients.size() - 1);
					ingredients.remove(ingredients.size() - 1);
					ingredients.remove(ingredients.size() - 1);
					ingredients.remove(ingredients.size() - 1);
				}
			}

		}
		return answer;
	}
}

📄 해설

  • 스택(Stack) 자료구조를 사용한다는 생각으로 접근하면 해결 가능
    • JavaStack 클래스를 사용 할 경우 인덱싱이 어려우므로, ArrayList 클래스를 사용하여 해결하였음
  • 재료 리스트 ingredients 와 햄버거 순서 리스트 seq 를 사용
  • 재료 리스트에 입력 받은 재료를 추가
  • 재료 리스트의 크기가 4 이상일 경우, 임시 리스트 temp 에 마지막 4개 재료를 전부 추가
  • tempseq 가 같으면 answer 증가 후 재료 리스트에서 제거
profile
조금 느릴게요~

0개의 댓글