강의로 돌아가기
AKUMAKU

C++ 4,5,7,12 시간초과

erase 로 접근했다가
사용된 원소를 -1로 변환하는 쪽으로
알고리즘을 바꿨는데

그래도 시간 초과네 ...

작성중인 코드―solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <string>
#include <vector>

using namespace std;

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> ingredient) {
    int answer = 0;
    vector<int> hamburger = { 1,2,3,1 };
    vector<int> packaged;
    int i = 0; int start = ingredient.size();
    int n = 0; vector < int > select;
    for (int i = 0; i < ingredient.size(); i++)
    {
        if (ingredient[i] == 1 && start > i)
        {
            start = i;
        }
        if (ingredient[i] == -1)
            continue;
        if (ingredient[i] == hamburger[n])
        {
            n++;
            select.push_back(i);
        }
        else
        {
            n = 0;
            select.clear();
            if (ingredient[i] == hamburger[n])
            {
                n++;
                select.push_back(i);
            }
        }
        if (n == 4)
        {

            for (int j = 0; j < select.size(); j++)
            {
                ingredient[select[j]] = -1;

            }
            select.clear();
            answer++;
            i = start-1;
            n = 0;
        }
    }


    return answer;
}
1 개의 답변
최재혁

약간 순차적으로 입력받다가 조건에 맞는 형태가 나오면 제거해주는 형태일 때는 stack 사용하는 것을 추천드립니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.