[프로그래머스] 롤케이크 (dp와 Set)

쿼카쿼카·2023년 4월 7일
0

알고리즘

목록 보기
53/67

문제


코드

function solution(topping) {
    const a = new Set();
    const b = {};
    
    let ans = 0;
    let check = 0;
    
    for(const t of topping) {
        if(b[t]) b[t]++;
        else {
            b[t] = 1;
            check++;
        }
    }
    
    for(const t of topping) {
        a.add(t);
        b[t]--;
        
        if(!b[t]) check--;
        if(a.size === check) ans++;
    }
    
    return ans;
}

또간초과

  • 역시 여기도 100만원이죠? 근데 저는 처음에 slice를 활용했어요! 이러면 안 됩니다!!!!
  • dp를 이용해서 풀어주세요

dp를 이용한 풀이

솔직히 이거 보고 감탄만 나왔다...

  • Set과 dp 객체를 만들어줘요!
  • ans는 답이고, check는 새로운 종류가 들어왔을 때 +1 해줘요
  • 한 번 돌아봅시다!!!
    • 돌면서 dp[t]가 있으면 +1해주고, 없으면 추가하며 check도 +1 해줘요!
  • 이제 동생이 가르는 거 돕시다!!
    • 돌면서 Set에 하나씩 채워요(중복을 막을 수 있죠)
    • 채운 것은 dp[t]-- 해줘요
    • 그 후 dp[t]가 0이면 한 종류가 씨가 말라 버린 거라 check--를 해줘요!
    • 그 후!!! set의 사이즈와 check가 같다면 종류가 같은거니까 ans++
profile
쿼카에요

0개의 댓글