티스토리 뷰

 

2022.11.29

프로그래머스 스쿨 Lv01. 햄버거 만들기


 

프로그래머스

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

programmers.co.kr

 

🚀 문제 파악

* 조리된 순서를 지켜 재료를 아래에서부터 위로 쌓는다
* 정해진 순서(빵-야채-고기-빵)로 쌓인 햄버거만 포장 가능
* 햄버거의 높이는 제한없음

예를들어
* 재료가 순서대로 
* 야채,빵,빵,야채,고기,빵,야채,고기,빵
** 3~6까지 햄버거 1개
* 야채,,빵,야채,고기,빵,야채,고기,빵

** 2, 7~9까지 햄버거 1개 (이미 사용된 재료 제외)
* 총 2개의 햄버거 포장 가능

 

 

🚀 문제 해결 방법(1) 스택 활용, 뒤에서부터 확인하기 + splice()

1. ingredient의 값을 순서대로 stack에 push

2. stack.length가 4보다 크거나 같을 때, 뒤에서부터 recipe 와 비교

  2-1. 비교했을 때 recipe와 동일하면

           *해당 부분 splice해서 없애주기

  2-2. 비교했을 때 recipe와 다르면

           *다시 push 시작

function solution(ingredient) {
    var answer = 0;
    var recipe = '1,2,3,1';
    var stack = [];

    ingredient.forEach( (item,idx) => {
        stack.push(item);
        if(stack.length >= 4 && stack.slice(-4).join() == recipe){
            answer++;
            stack.splice(0,idx-1);
        }
    });

    return answer;
}

 

 

 

🚀 문제 해결 방법(2) 스택 활용, 뒤에서부터 확인하기 + pop() 4번 하기

1. ingredient의 값을 순서대로 stack에 push

2. stack.length가 4보다 크거나 같을 때, 뒤에서부터 recipe 와 비교

  2-1. 비교했을 때 recipe와 동일하면

           *해당 부분 pop해서 없애주기

  2-2. 비교했을 때 recipe와 다르면

           *다시 push 시작

function solution(ingredient) {
    var answer = 0;
    var recipe = '1,2,3,1';
    var stack = [];

    ingredient.forEach( (item,idx) => {
        stack.push(item);
        if(stack.length >= 4 && stack.slice(-4).join() == recipe){
            answer++;
            stack.splice(0,idx-1);
        }
    });

    return answer;
}

 

 

 


💬 단순하게 문제 해결할 수 있는 방법도 많ㄷ ㅏ.. 😂

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday