문제 설명
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
시간 초과 나의 풀이
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
List<Integer> list = new ArrayList<>();
for (int ing : ingredient) {
list.add(ing);
}
while (true) {
boolean isValid = false;
for (int i = 0; i < list.size() - 3; i++) {
if (list.get(i) == 1 && list.get(i+1) == 2 && list.get(i+2) == 3 && list.get(i+3) == 1) {
// 순서대로 삭제하면 인덱스 밀리므로 같은 위치 4번 삭제
list.remove(i); // 1
list.remove(i); // 2
list.remove(i); // 3
list.remove(i); // 1
answer++;
isValid = true;
break; // for문 벗어남, 햄버거 만들었으면 다시 처음부터
}
}
if (!isValid) break; // while문 벗어남
}
return answer;
}
}
풀이법
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int ing : ingredient) {
stack.push(ing);
// 스택에 4개 이상 쌓였을 때만 검사
if (stack.size() >= 4) {
int size = stack.size();
if (stack.get(size - 4) == 1 &&
stack.get(size - 3) == 2 &&
stack.get(size - 2) == 3 &&
stack.get(size - 1) == 1) {
// 햄버거 재료 제거
stack.pop();
stack.pop();
stack.pop();
stack.pop();
answer++;
}
}
}
return answer;
}
}
'👨💻 Coding Test > Programers' 카테고리의 다른 글
[Programmers/Java/Lv.1/HashMap] 63.과일 장수 (1) | 2025.06.30 |
---|---|
[Programmers/Java/Lv.1/문자열] 62.푸드 파이트 대회 (0) | 2025.06.29 |
[Programmers/Java/Lv.1/문자열] 60.옹알이 (2) (0) | 2025.06.29 |
[Programmers/Java/Lv.1/수학] 59.콜라 문제 (0) | 2025.06.28 |
[Programmers/Java/Lv.1/조합] 58.삼총사 (0) | 2025.06.27 |