[Programmers] 롤케이크 자르기(Lv.2)

Alice·2023년 6월 18일
0

풀이 소요시간 : 30분


일단 문제를 살펴보면 map 을 사용해야함이 자명하다. 다만 나는 굳이 set 까지 끌어와서 사용하는 코드를 작성했는데, map.size() 메소드의 값이 산정되는 방식을 잘 알았다면 굳이 그러지 않았을 듯 하다. 해당 부분은 리팩토링하여 전체 코드를 업로드 하도록 하겠다.

map[X] = 0 이 된다고 해서 map.size() 의 크기가 줄어드는 것이 아니다. key 값을 기준으로 map.erase(key) 를 해주어야 해당 key - value 가 사라지면서 map.size() 의 감소가 발생한다.


전체 코드

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

map<int, int> Map;
map<int, int> Map_2;
int N;
int Size;
int Size_2;

int solution(vector<int> topping) {
    
    N = topping.size();
    
    for(int i = 0; i < N; i++) {
        Map[topping[i]]++;
    }
    Size = Map.size();
    //토핑의 종류 수 = Size;

    int Cnt = 0;
    
    for(int i = 0; i < N; i++) {
        Map[topping[i]]--;
        if(Map[topping[i]] == 0) {
            Map.erase(topping[i]);
        }
        Map_2[topping[i]]++;
        
        Size = Map.size();
        Size_2 = Map_2.size();

        if(Size == Size_2) Cnt++;
    }
    
    return Cnt;
}
profile
꾸준한 습관으로 만드는 내면의 견고함

0개의 댓글