반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/133502
문제 이해하기
재료의 순서는 무조건 [빵, 야채, 고기, 빵]
순서가 되어야 하고,
그 재료를 빼더라도 남은 재료의 순서는 보존해야 하는게 핵심입니다.
예제를 보면
[야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵]
- 3번째부터
[빵, 야채, 고기, 빵]
이 첫 번째 햄버거가 됩니다.
- 3번째부터
- 첫 번째 햄버거의 재료를 제외하면
[야채, 빵, 야채, 고기, 빵]
이 남게 됩니다.- 2번째부터
[빵, 야채, 고기, 빵]
이 두 번째 햄버거가 됩니다.
- 2번째부터
재료가 담긴 배열을 순서대로 수행하면서 햄버거가 완성되면 재료를 빼고 기존 재료들은 기억하고 있으면서, 다음 재료를 순서대로 가져오면 됩니다. 예제를 그림으로 풀어보면 이런 그림이 됩니다.
이제 코드로 풀어보겠습니다.
문제 풀이
1번 풀이
public int solution(int[] ingredient) {
int[] newIngredient = new int[ingredient.length];
int idx = 0, answer = 0;
for(int ing : ingredient) {
newIngredient[idx] = ing;
idx++;
if(idx >= 4) {
if(newIngredient[idx-4] == 1 && newIngredient[idx-3] == 2 && newIngredient[idx-2] == 3 && newIngredient[idx-1] == 1) {
idx -= 4;
answer++;
}
}
}
return answer;
}
newIngredient
에는 햄버거 재료를 순서대로 넣습니다.
단, 햄버거가 완성되면 idx -= 4
로 인덱스 조정을 해줍니다. (햄버거는 무조건 4개의 재료이므로)
이렇게 함으로써 기존 재료는 보존하면서 완성된 햄버거의 재료는 없앨 수 있습니다.
정확성 테스트
테스트 1 〉 | 통과 (0.02ms, 83.6MB) |
---|---|
테스트 1 〉 | 통과 (0.02ms, 83.6MB) |
테스트 2 〉 | 통과 (0.02ms, 82.3MB) |
테스트 3 〉 | 통과 (9.47ms, 92.2MB) |
테스트 4 〉 | 통과 (12.51ms, 114MB) |
테스트 5 〉 | 통과 (13.44ms, 119MB) |
테스트 6 〉 | 통과 (8.40ms, 93.2MB) |
테스트 7 〉 | 통과 (18.28ms, 97.4MB) |
테스트 8 〉 | 통과 (11.97ms, 88MB) |
테스트 9 〉 | 통과 (8.49ms, 106MB) |
테스트 10 〉 | 통과 (0.54ms, 66.6MB) |
테스트 11 〉 | 통과 (7.42ms, 89.7MB) |
테스트 12 〉 | 통과 (14.15ms, 133MB) |
테스트 13 〉 | 통과 (0.06ms, 69.5MB) |
테스트 14 〉 | 통과 (0.03ms, 81.2MB) |
테스트 15 〉 | 통과 (0.03ms, 67.9MB) |
테스트 16 〉 | 통과 (0.03ms, 73.8MB) |
테스트 17 〉 | 통과 (0.02ms, 75.1MB) |
테스트 18 〉 | 통과 (0.01ms, 75.9MB) |
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 공원 산책 JAVA :: 172928 (0) | 2023.08.24 |
---|---|
프로그래머스 - 개인정보 수집 유효기간 JAVA :: 2023 KAKAO BLIND RECRUITMENT :: 150370 (0) | 2023.01.09 |
프로그래머스 - 크기가 작은 부분 문자열 JAVA :: 147355 (0) | 2022.12.23 |
프로그래머스 - 푸드 파이트 대회 JAVA :: 134240 (0) | 2022.12.22 |
프로그래머스 - 삼총사 JAVA :: 131705 (0) | 2022.12.21 |