Algorithm/PS

[C++, python] 프로그래머스 - 햄버거 만들기

chanwoong1 2023. 2. 26. 02:27
728x90

문제 링크

 

프로그래머스

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

programmers.co.kr

문제 풀이

이 문제는 주어지는 입력값을 처음부터 읽으면서, [빵 - 야채 - 고기 - 빵] 의 순서일 경우, 이 입력값들을 제거하며 정답을 추가하는 문제이다.

이 문제를 풀기 위해 스택의 원리를 사용했다. 빈 문자열을 하나 만들어준 뒤, 이 문자열에 주어지는 입력값을 하나씩 추가해주면서, 문자열의 길이가 4 이상이 될 경우마다 마지막 부분의 문자열이 "1231"로 끝나는지 확인해준다. 만약 "1231"로 끝난다면, 조건에 만족하므로, 문자열에서 "1231"을 제거해주면서 정답을 1 증가시킨다. 입력값을 마지막까지 읽었을 때 정답을 반환한다.

정답 코드

C++

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> ingredient) {
    int answer = 0;
    string curr = "";
    for (int i = 0; i < ingredient.size(); i++) {
        curr += to_string(ingredient[i]);
        if (curr.length() >= 4 && curr.substr(curr.length() - 4, 4) == "1231") {
            curr = curr.substr(0, curr.length() - 4);
            answer++;
        }
    }
    return answer;
}

python

def solution(ingredient):
    answer = 0
    curr = ""
    for i in range(len(ingredient)) :
        curr += str(ingredient[i])
        if len(curr) >= 4 and curr[len(curr) - 4: ] == "1231" :
            curr = curr[ : len(curr) - 4]
            answer += 1
    return answer
728x90