본문 바로가기
ALGORITHMS/SOLUTION

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

by alasdkfm 2023. 7. 22.

목차

    문제

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

    내풀이

    java
    닫기
    import java.util.Stack; class Solution{ ​​​​public int solution(int[] ingredient) { ​​​​​​​​Stack<Integer> stack = new Stack<>(); ​​​​​​​​int answer = 0; ​​​​​​​​for (int i : ingredient) ​​​​​​​​{ ​​​​​​​​​​​​stack.push(i); ​​​​​​​​​​​​int sz = stack.size(); ​​​​​​​​​​​​ ​​​​​​​​​​​​if (sz>=4 && stack.peek() == 1) ​​​​​​​​​​​​{ ​​​​​​​​​​​​​​​​if (stack.get(sz-2) == 3 && ​​​​​​​​​​​​​​​​​​​​stack.get(sz-3) == 2 && ​​​​​​​​​​​​​​​​​​​​stack.get(sz-4) == 1 ) ​​​​​​​​​​​​​​​​{ ​​​​​​​​​​​​​​​​​​​​​​​​answer ++; ​​​​​​​​​​​​​​​​​​​​​​​​for(int j = 0; j<4; j++) ​​​​​​​​​​​​​​​​​​​​​​​​stack.pop(); ​​​​​​​​​​​​​​​​} ​​​​​​​​​​​​} ​​​​​​​​} ​​​​​​​​return answer; ​​​​} ​​​​public static void main(String[] args){ ​​​​​​​​// int[] ingredient = new int[]{2, 1, 1, 2, 3, 1, 2, 3, 1}; ​​​​​​​​int[] ingredient = new int[]{1, 3, 2, 1, 2, 1, 3, 1, 2}; ​​​​​​​​Solution sol = new Solution(); ​​​​​​​​System.out.println("Answer :: "+sol.solution(ingredient)); ​​​​} }

    나는 STACK을 활용하였지만, 다른사람이 iint배열만 사용하여 푼 것을 보았다.

    풀이는 다음과 같다. 

     

    다른사람 풀이 

    java
    닫기
    Class Solution { ​​​​public int solution(int[] ingredient) { ​​​​​​​​int[] stack = new int[ingredient.length]; ​​​​​​​​int sp = 0; ​​​​​​​​int answer = 0; ​​​​​​​​for (int i : ingredient) { ​​​​​​​​​​​​stack[sp++] = i; ​​​​​​​​​​​​if (sp >= 4 && stack[sp - 1] == 1 ​​​​​​​​​​​​​​​​&& stack[sp - 2] == 3 ​​​​​​​​​​​​​​​​&& stack[sp - 3] == 2 ​​​​​​​​​​​​​​​​&& stack[sp - 4] == 1) { ​​​​​​​​​​​​​​​​sp -= 4; ​​​​​​​​​​​​​​​​answer++; ​​​​​​​​​​​​} ​​​​​​​​} ​​​​​​​​return answer; ​​​​} }