C++:: 프로그래머스 < 롤케이크 자르기 >

jahlee·2023년 5월 12일
0

프로그래머스_Lv.2

목록 보기
43/106
post-thumbnail

잘랐을때 토핑의 개수가 같으면 되는 문제이다. unordered_map 을 사용한 풀이이다.

#include <string>
#include <vector>
#include <unordered_map>
using namespace std;

int solution(vector<int> topping)
{
    int answer = 0, cake;
    unordered_map <int,int> base, cmp;// base: 안잘린 통짜 케이크, cmp: 잘랐을때의 상태
    for(auto c : topping) base[c]++;
    cake = base.size();// 케이크에 올라간 토핑의 총 개수
    for(auto c : topping)
    {// 한 토핑씩 잘라준다.
        cmp[c]++; base[c]--;
        if (base[c] == 0 ) cake--;// 해당 토핑의 개수가 떨어지면 안자른 케이크 토핑수--
        if (cake == cmp.size()) answer++;// 안자른 케이크 토핑수 == 자른 케이크 토핑수 이면
    }
    return answer;
}

0개의 댓글