주녘공부일지

[프로그래머스 C#] Lv.1 햄버거 만들기 본문

CodingTest/Programmers Lv.1

[프로그래머스 C#] Lv.1 햄버거 만들기

주녘 2023. 12. 5. 17:53

https://school.programmers.co.kr/learn/courses/30/lessons/133502

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 정답코드 및 핵심 아이디어, 유의사항

생각보다 고생시킨 문제로 처음엔 문자열로 담아서 Replace로 날먹하려고 했는데 체크할 때 기준으로 한번에 삭제되기 때문에 실패함 ( 앞쪽부터 순서대로 삭제하고 체크해야 함 )

- 즉, 체크하는 기준은 주어진 배열의 앞쪽부터 만족한다면 하나씩 지우고 다시 체크를 반복해야 함

 

문제풀이 핵심) 리스트에 하나씩 추가하며 체크하게 되면 햄버거를 만들 수 있는 조건을 만족하는 건 무조건 list의 마지막 인덱스부터 4자리가 되는 것을 이용

 

주석 참조

    using System;
    using System.Collections.Generic;

    public class Solution
    {
        public int solution(int[] ingredient)
        {
            int answer = 0;
            var list = new List<int>();

            foreach (int num in ingredient)
            {
                // 리스트에 하나씩 추가해나감
                list.Add(num);

                // list의 크기가 4이상이면 체크 시작
                if (list.Count >= 4)
                {
                    // 햄버거를 만들 수 있다면 무조건 마지막 인덱스를 기준으로 이루어짐
                    if (list[list.Count - 4] == 1 && list[list.Count - 3] == 2 &&
                       list[list.Count - 2] == 3 && list[list.Count - 1] == 1)
                    {
                        // 햄버거를 만듬
                        answer++;
                        list.RemoveRange(list.Count - 4, 4);
                    }
                }
            }
            return answer;
        }
    }