[BAEKJOON] 14501번 퇴사

2024. 4. 7. 18:51·Algorithm/Dynamic Programming

https://www.acmicpc.net/problem/14501

 

14501번: 퇴사

첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.

www.acmicpc.net

문제조건
  1. 퇴사 전까지 상담을해서 얻을수 있는 최대 수익을 구하라

단순히 구현 + dp 문제였다.

dp[i] : i일까지의 상담중에서 최대 수익 값

완전탐색을 진행하면서 상담에 걸리는 일수가 퇴사 전일때, 구하고자 하는 일자의 수익과, 지금까지의 수익 + 구하고자 하는 일자까지 상담하는 수익을 비교해서 최댓값을 갱신시켜줬다.

 

소스코드
#include <iostream>
#include <vector>

using namespace std;

int n, t[16], p[16], dp[16];

int main(){
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> t[i] >> p[i];
	}
	int res = 0;

	for (int i = 0; i < n; i++) {
		dp[i] = max(res, dp[i]);
		//퇴사전까지 상담 마칠수있으면 지금 날짜에 일한거랑 비교
		if (t[i] + i <= n) dp[t[i] + i] = max(dp[t[i] + i], p[i] + dp[i]);
		res = max(res, dp[i]);
	}
	cout << res;
}

+) 추가

 


DFS방식

 

DP를 풀면서도 생각을 했지만, 어차피 완전탐색으로 전체를 돌거기때문에 DFS로도 풀리지 않을까 라는 생각이 들었다.

 

#include <iostream>
#include <vector>

using namespace std;

int n, t[16], p[16], dp[16], res;

void dfs(int day, int sum) {
	if (day > n) return;
	res = max(res, sum);
	for (int i = day; i < n; i++) {
		dfs(i + t[i], sum + p[i]);
	}
	
}

int main(){
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> t[i] >> p[i];
	}
	dfs(0, 0);
	cout << res;
}

 

나한테는 DFS가 조금 더 직관적이고, 로직이 간결하다고 느껴졌다.

'Algorithm > Dynamic Programming' 카테고리의 다른 글

[BAEKJOON] 1446번 지름길  (0) 2024.05.13
[BAEKJOON] 1937번 욕심쟁이 판다  (0) 2024.04.07
[BAEKJOON] 3114번 사과와 바나나  (0) 2024.04.05
[BAEKJOON] 9252번 LCS 2  (0) 2024.03.29
[BAEKJOON] 1509번 팰린드롬 분할  (0) 2024.03.29
'Algorithm/Dynamic Programming' 카테고리의 다른 글
  • [BAEKJOON] 1446번 지름길
  • [BAEKJOON] 1937번 욕심쟁이 판다
  • [BAEKJOON] 3114번 사과와 바나나
  • [BAEKJOON] 9252번 LCS 2
Ls._.Rain
Ls._.Rain
안되면 될때까지 삽질했던 기록
  • Ls._.Rain
    Ls{Diary}
    Ls._.Rain
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Github (2)
      • Spring (51)
        • Batch Programming (13)
        • 결제 (4)
        • 대용량 트래픽 (32)
        • OpenAI (0)
        • Security (0)
        • WebSocket (0)
        • JPA (1)
      • Algorithm (67)
        • DFS (6)
        • BFS (6)
        • Dynamic Programming (10)
        • Brute Force (4)
        • Binary Search (6)
        • 구현, 시뮬레이션 (15)
        • Stack (1)
        • Greedy (4)
        • Priority_Queue (2)
        • Back Tracking (3)
        • Geometry (2)
        • SCC (1)
        • 투포인터 (4)
        • 최대유량 (1)
        • 정렬 (1)
      • OS (0)
      • DevOps (15)
        • AWS (11)
        • Docker (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • hELLO· Designed By정상우.v4.10.0
Ls._.Rain
[BAEKJOON] 14501번 퇴사
상단으로

티스토리툴바