- 회고
68. 햄버거 만들기 : https://school.programmers.co.kr/learn/courses/30/lessons/133502#
- 풀이 과정
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
List<Integer> li = new ArrayList<>();
for (int n : ingredient) {
li.add(n);
}
int i = 0;
while (i <= li.size() - 4) {
if (li.get(i) == 1 && li.get(i + 1) == 2 && li.get(i + 2) == 3 && li.get(i + 3) == 1) {
answer++;
for (int j = 0; j < 4; j++) {
li.remove(i);
}
i = Math.max(0, i - 3);
} else {
i++;
}
}
return answer;
}
}
- 입력 배열을 리스트화한다.
- 리스트를 돌면서 li.size() - 3까지 반복문을 실행한다.
- 조건에 맞는 순서가 출현하면 asnwer을 증가시키고 해당하는 항목을 li.remove한다
- 재귀 할 때 시작점을 outofbounds를 고려하여 Math.max(0, i - 3)으로 설정
※ i - 3인 이유는 패턴의 길이가 4이기때문이다, 패턴 겹침 검사는 i = i - (n - 1)이다
[2, 2, 1, 2, 1, 2, 3, 1, 3, 1]인경우
i = 4지점에서 패턴이 발견되어 삭제 후 [2, 2, 1, 2, 3, 1]인 상태가 된다.
i = 4지점인 3을 가르키고 있는데 이 상태에서 i - 3을 하게되면 겹치는 부분을 고려해 패턴검사를 시행 할 수 있다.
- 진행
일자 | 완료 번호 |
24.07.16 ~ 24.07.31 | 1~63 |
24.08.01 | 64 |
24.08.02 | 65 |
24.08.05 | 66 |
24.08.06 | 67 |
24.08.07 | 68 |
'Java & Spring > 코딩테스트' 카테고리의 다른 글
20일차 - 알고리즘 코드카타 (0) | 2024.08.09 |
---|---|
19일차 - 알고리즘 코드카타 (0) | 2024.08.08 |
17일차 - 알고리즘 코드카타 (0) | 2024.08.06 |
16일차 - 알고리즘 코드카타 (0) | 2024.08.06 |
15일차 - 알고리즘 코드카타 (0) | 2024.08.05 |