hyelie
hyelie
Hyeil Jeong
       
글쓰기    관리    수식입력
  • 전체보기 (495)
    • PS (283)
      • Algorithm (28)
      • PS Log (244)
      • Contest (6)
      • Tips (5)
    • Development (52)
      • Java (14)
      • Spring (23)
      • SQL (2)
      • Node.js (2)
      • Socket.io (3)
      • Study (4)
      • Utils (4)
    • DevOps (36)
      • Git (5)
      • Docker (4)
      • Kubernetes (2)
      • GCP (3)
      • Environment Set Up (8)
      • Tutorial (12)
      • Figma (2)
    • CS (74)
      • OOP (7)
      • OS (24)
      • DB (2)
      • Network (24)
      • Architecture (0)
      • Security (2)
      • Software Design (0)
      • Parallel Computing (15)
    • Project (15)
      • Project N2T (5)
      • Project ASG (0)
      • Project Meerkat (1)
      • Model Checking (7)
      • Ideas (2)
    • 내가 하고싶은 것! (34)
      • Plan (16)
      • Software Maestro (10)
      • 취준 (8)
hELLO · Designed By 정상우.
hyelie

hyelie

PS/PS Log

23.03.28. 풀었던 문제들

Leetcode 983. Minimum Cost For Tickets

 dp로 풀리는 문제. dp[i]를 ith day의 cost라 하자. 그러면 다음과 같은 점화식을 찾을 수 있다.

  • dp[i-1] + [현재 값이 day에 있으면 cost[0]]
  • dp[i-7] + 7일권 cost
  • dp[i-30] + 30일권 cost

 

 항상 그렇듯 dp[i]를 뭘로 정의하냐에 따라 점화식을 세우기 쉬워지기도 하고, 어려워지기도 한다. 점화식을 잘 세워보자.

// Runtime 4 ms Beats 69.83%
// Memory 9.6 MB Beats 81.2%

class Solution {
public:
    int handleOutbound(int day, int value){
        if(day - value < 0) return 0;
        return day - value;
    }
    int mincostTickets(vector<int>& days, vector<int>& costs) {
        int INF = days[days.size()-1] + 1;
        cout<<INF<<endl;
        vector<int> dp(INF, 0);
        for(int i = 1, didx = 0; i<INF; i++){
            dp[i] = dp[i-1];
            if(didx < days.size() && days[didx] == i){
                dp[i] += costs[0];
                didx++;
            }
            dp[i] = min(dp[i], dp[handleOutbound(i, 7)] + costs[1]);
            dp[i] = min(dp[i], dp[handleOutbound(i, 30)] + costs[2]);
        }
        
        return dp[INF-1];
    }
};

 

시간복잡도 & 공간복잡도

 처음부터 끝까지 탐색한다. 이 때 INF의 max값은 365이므로 O(365)

 

 

 

 

저작자표시 (새창열림)

'PS > PS Log' 카테고리의 다른 글

23.03.30. 풀었던 문제들  (0) 2023.03.30
23.03.29. 풀었던 문제들  (0) 2023.03.29
23.03.27. 풀었던 문제들  (0) 2023.03.27
23.03.26. 풀었던 문제들  (1) 2023.03.26
23.03.25. 풀었던 문제들  (0) 2023.03.25
    hyelie
    hyelie

    티스토리툴바