본문 바로가기

코딩테스트/Mastered

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

실패

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function solution(ingredient) {
    var answer = 0;
    
    for(let index = 0; index <= ingredient.length; index++){
        const first = ingredient[index], second = ingredient[index+1], 
          third = ingredient[index+2], fourth = ingredient[index+3];
        
        if(first + 1 === second && second + 1 === third && first === fourth){
            ingredient.splice(first, 4)
            answer++;
        }
    }
    
    return answer;
}
cs

while 문을 써야하나? 고민했지만 실패.

 

통과

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
* 햄버거 만들기
* 빵 – 야채 – 고기 - 빵 <=> 1-2-3-1
*/
function solution(ingredient) {
    var answer = 0;
 
    let stack = [];
    for(let index = 0; index <= ingredient.length; index++){
       stack.push(ingredient[index]);
        
        if(stack.length > 3){
            const isHamburger = stack.slice(-4).join(''=== '1231';
            if(isHamburger){
               stack.splice(-4);
                answer++;
            }
        }
        
    }
    
    return answer;
}
cs

스택 역할을 하는 배열 객체를 만드는 것이 중요하다. 스택에 숫자 4개가 쌓일 때마다 햄버거를 만들 수 있는지 체크한다.

'코딩테스트 > Mastered' 카테고리의 다른 글

[leetcode] 13. Roman to Integer  (0) 2022.11.04