https://school.programmers.co.kr/learn/courses/30/lessons/133502
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 |
댓글