https://school.programmers.co.kr/learn/courses/30/lessons/133502
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. 의사 코드
재료들을 새로운 벡터에 담음
새로운 벡터에{1,2,3,1} 패턴이 있는지 확인하고 있다면 지우고 answer를 증가시킴
2. 제출 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> ingredient) {
int answer = 0;
vector<int> burger;
vector<int> comb = {1,2,3,1} ;
for(int in : ingredient)
{
burger.push_back(in);
auto it = search(burger.end()-4,burger.end(),comb.begin(),comb.end());
if (it != burger.end())
{
burger.erase(it,burger.end());
answer++;
}
}
return answer;
}
3. Trouble Shooting
- 재료가 100만개까지 줄 수 있으므로 주어진 ingredient 벡터에서 패턴을 찾아 지우기는 너무 많은 시간을 필요로 함. 따라서 해당 ingredient를 받아오는 새로운 벡터를 만듦
auto it = search(burger.begin(),burger.end(),comb.begin(),comb.end());
- 처음에는 burger의 begin부터 end까지 검사했는데, 이 역시 burger의 원소 수가 많아질수록 시간 초과가 발생했음. {1,2,3,1}패턴을 발견하면 지속적으로 지우기 때문에 마지막 부터 4개의 원소만 검사하면 되었음. 따라서 burger.end() - 4 로 로직을 변경
반응형
'AlgorithmCodekata' 카테고리의 다른 글
| [AlgorithmCodeKata] 2026-03-25 | 카드 뭉치 (0) | 2026.03.25 |
|---|---|
| [AlgorithmCodeKata] 2026-03-23 | 명예의 전당 (1) (0) | 2026.03.23 |
| [AlgorithmCodeKata] 2026-03-20 | 콜라 문제 (0) | 2026.03.20 |
| [AlgorithmCodeKata] 2026-03-18 | 문자열 내 마음대로 정렬하기 (0) | 2026.03.18 |
| [AlgorithmCodeKata] 2026-03-12 | 문자열 내 마음대로 정렬하기 (0) | 2026.03.12 |