[프로그래머스, Java] 햄버거 만들기

2025. 7. 21. 18:09·CodingTest/Programmers

사진을 클릭하면 해당 문제로 이동

❌풀이 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
'CodingTest/Programmers' 카테고리의 다른 글
  • [프로그래머스, Java][PCCE 기출문제] 10번 / 데이터 분석
  • [프로그래머스, Java] 크레인 인형뽑기 게임
  • [프로그래머스, Java] 숫자 짝꿍
  • [프로그래머스, Java] 체육복
devoks
devoks
꾸준히 작성해보자!
  • devoks
    ok's 개발 블로그
    devoks
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • Backend (15)
        • SpringBoot (0)
        • Java (15)
      • Cs (18) N
      • Infra (0)
        • AWS (0)
        • Docker (0)
      • CodingTest (79)
        • Programmers (79)
  • 링크

    • My GitHub
  • 인기 글

  • 태그

    CS
    BufferedReader
    codingtest
    effectivejava
    programmers
    switch
    json
    BufferedWriter
    java
    StringTokenizer
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devoks
[프로그래머스, Java] 햄버거 만들기
상단으로

티스토리툴바