Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 5강클로저
- 타겟넘버
- 이중지도
- React.StrictMode
- 두원사이의정수쌍
- 2023카카오블라인드코테
- div2개
- 알고리즘 문제풀이
- 스택
- 우박수열정적분
- solved.ac골드
- 백준알고리즘
- 백준 알고리즘
- 최소스패닝트리
- 정렬
- [pccp 기출문제]
- JS
- 코어자바스크립트
- 비트마스크
- solved.ac플래티넘
- JS스터디
- 알고리즘문제풀이
- Lv3
- pccp기출문제
- c++
- Lv2
- 프로그래머스
- 지도 여러개
- DP
- 과제진행하기
Archives
- Today
- Total
호지
[프로그래머스] 햄버거 만들기 문제풀이 JS 본문
재료를 확인해서 1231순서가 나온다면 햄버거를 만드는 경우이므로 answer를 1증가하고,
재료리스트에서 1231을 제거한다.
이때 재료리스트가 4이하면 햄버거를 만들지 못하는 경우이므로 종료.
i에서 3을 빼주고 위 과정을 반복한다.
* 3을 빼는 이유는 햄버거를 만들기위해서는 2번째전 재료부터 다시 확인하면 되기 때문이다.
순서가 1231이기 때문에 3번째전 재료부터 확인해서 123의 순서가 나오게 되면
1231231 처럼되게 되는데 이렇게되면 이미 앞에 1231이 만나 햄버거가 만들어졌기 때문에
3번째전 재료부터 확인했을 때 123의 순서는 절대 나올수가 없다.
따라서 우리는 2번째전 재료부터 확인하면 되는데, for문에서 1증가가 이뤄지기 때문에
i에서 3을 빼면 자동으로 2번째전 재료부터 다시 확인하면서 햄버거를 만들 수 있는지 체크한다.
function solution(ingredient) {
let answer = 0
for (let i = 0; i <= ingredient.length - 4; i++) {
if (ingredient[i] === 1 && ingredient[i + 1] === 2 && ingredient[i + 2] === 3 && ingredient[i + 3] === 1) {
answer++
ingredient.splice(i, 4)
if (ingredient.length < 4) break
i -= 3
}
}
return answer
}
https://school.programmers.co.kr/learn/courses/30/lessons/133502
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 옹알이(2) 문제풀이 JS (0) | 2023.07.31 |
---|---|
[프로그래머스] 콜라 문제 문제풀이 (0) | 2023.07.31 |
[프로그래머스] 과일 장수 문제풀이 JS (0) | 2023.07.28 |
[프로그래머스] 기사단원의 무기 문제풀이 JS (0) | 2023.07.28 |
[프로그래머스] 명예의 전당(1) 문제풀이 JS (0) | 2023.07.26 |
Comments