❌풀이 1
// 배열을 한문자로 만든다
// 1231을 replace한다
// 기존 문자와 replace한 문자의 길이차이 / 4 를 해서 answer 에 저장한다
// 기존과 길이차이가 나지 않을때까지 반복한다
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution { // 실패한 풀이
public int solution(int[] ingredient) {
String recipe = "1231";
String burgers = Arrays.stream(ingredient).mapToObj(String::valueOf).collect(Collectors.joining());
String packing = "";
int answer = 0;
while(true) {
packing = burgers.replace(recipe, "");
if(burgers.length() != packing.length()) {
answer += (burgers.length() - packing.length()) / 4;
burgers = packing;
} else {
break;
}
}
return answer;
}
}
⚠️풀이 2
- 운이좋게 통과했으나 마지노선에 걸림 정답이 아님
class Solution2 {
public int solution(int[] ingredient) {
String recipe = "1231";
StringBuilder sb = new StringBuilder();
int answer = 0;
for(int n : ingredient) {
sb.append(n);
}
while(true) {
int index = sb.indexOf(recipe);
if(index == -1) {
break;
}
sb.delete(index, index + 4);
answer++;
}
return answer;
}
}
💡풀이 3
- 값을 하나씩 추가해나가면서 바로 처리해나가기 (stack)
import java.util.ArrayList;
import java.util.List;
class Solution3 {
public int solution(int[] ingredient) {
List<Integer> burgers = new ArrayList<>();
int answer = 0;
for(int n : ingredient) {
burgers.add(n);
int size = burgers.size();
if(size >= 4) {
if(burgers.get(size - 4) == 1
&& burgers.get(size - 3) == 2
&& burgers.get(size - 2) == 3
&& burgers.get(size - 1) == 1) {
answer++;
for(int i = 1; i <= 4; i++) {
burgers.remove(size - i);
}
}
}
}
return answer;
}
}
GitHub - okjunghyeon/Programmers_CodingTest: 프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다.
프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다. Contribute to okjunghyeon/Programmers_CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스, Java][PCCE 기출문제] 10번 / 데이터 분석 (0) | 2025.07.21 |
---|---|
[프로그래머스, Java] 크레인 인형뽑기 게임 (0) | 2025.07.21 |
[프로그래머스, Java] 숫자 짝꿍 (0) | 2025.07.21 |
[프로그래머스, Java] 체육복 (0) | 2025.07.21 |
[프로그래머스, Java] 완주하지 못한 선수 (0) | 2025.07.21 |