본문 바로가기
코테연습

178. 햄버거 만들기 Javascript

by hxunz 2023. 1. 20.

https://school.programmers.co.kr/learn/courses/30/lessons/133502

 

프로그래머스

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

programmers.co.kr

 

 

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
    상수가 포장하는 햄버거의 개수를 구하라
  • 주어진 자료는 무엇인가?
    ingredient : 재료의 정보를 나타내는 정수 배열
  • 조건은 무엇인가?
    빵-야채-고기-빵(1-2-3-1) 순서대로 햄버거를 만들 수 있다. 
    버거의 길이는 4이다.

2. 계획

  • ingredient를 순회하면서 스택을 쌓는다. 
  • 스택에서 스택의 총길이-1한 값이 1이고 그 전의 값이 3, 그전의 값이 2, 그 전의 값이 1이라면 스택 맨뒤에서부터 요소들을 네번 제거한다. 
  • 그리고 햄버거 수에 카운트를 더해준다. 

3. 실행

const solution = (ingredient) => {
  //1빵 2야채 3고기
  let burger = 0;
  let stack = [];

  for (let i = 0; i < ingredient.length; i++) {

    stack.push(ingredient[i]);

    if (stack[stack.length - 1] === 1 && stack[stack.length - 2] === 3 && stack[stack.length - 3] === 2 && stack[stack.length - 4] === 1) {
      for (let j = 0; j < 4; j++) {
        stack.pop()
      }
      burger++
    }
  }

  return burger;
}


test('solution', () => {
  expect(solution([2, 1, 1, 2, 3, 1, 2, 3, 1])).toBe(2);
  expect(solution([1, 3, 2, 1, 2, 1, 3, 1, 2])).toBe(0);
});

4. 반성

  • 문제를 다른 방식으로 해결할 수 있는가?
    재귀를 사용해서 해결할 수 있다.
const solution = (ingredient, count = 0) => {
  if (ingredient.join('').includes('1231') === false) {
    return count;
  }

  if (ingredient.join('').includes('1231') === true) {
    return solution(ingredient.join('').replace('1231', ''), count += 1)
  }
};

 

'코테연습' 카테고리의 다른 글

180. 크기가 작은 부분 문자열 Javascript  (0) 2023.01.20
179. 옹알이 Javascript  (0) 2023.01.20
177. 콜라문제 Javascript  (0) 2023.01.20
176. 가장 가까운 같은 글자 Javascript  (0) 2023.01.19
176. 과일장수 Javascript  (0) 2023.01.18

댓글