알고리즘 스터디 4주차 문제3 (퇴사)

문제#

algorithm-4-3

풀이 및 주저리..

간단하게 생각하면 쉽게 풀 수 있는 문제였는데 문제 이해력이 딸려서 오래 걸렸던 문제였다. 상담을 적절히 했을 때, 이 말을 상담을 가장 많이 했을때 최대 수익이 구하는 문제인줄 알고 계속해서 이상한 풀이로 문제를 제출하였다.. 그냥 최대 수익을 갖는 문제였는데.. 그래서 결국 당일날에 못풀고 다음날에 다시 도전했는데 이상한 점을 발견해서 쉽게 풀 수 있었다.

먼저 일하는 날과 얻을 수 있는 수익을 배열로 만들어 저장해 두고 DPS 로 문제를 풀었다. 풀고나서 구글링 해보니 DP 로도 풀 수 있는 문제인 것 같은데, 좀 더 고민하고 후에 다시 도전해봐야겠다.

코드

package baekjoon.algorithm.day01;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Resignation {

	static int max = 0;
	static int min_num = 0;
	static int N;
	static Work[] works;

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		works = new Work[N];
		for (int i = 0; i < N; i++) {
			String[] TP = br.readLine().split(" ");
			works[i] = new Work(Integer.parseInt(TP[0]), Integer.parseInt(TP[1]));
		}
		sol(0, 0, 0);

		System.out.println(max);

	}

	public static void sol(int day, int tem_max, int num) {
		if (day > N)
			return;

		if (day <= N) {
			max = Math.max(max, tem_max);
		}

		for (int i = day; i < N; i++) {
			sol(i + works[i].T, tem_max + works[i].P, num + 1);
		}
	}

}

class Work {
	int T;
	int P;

	public Work(int t, int p) {
		super();
		T = t;
		P = p;
	}

}

기억에 남길 것!

  • 다시 문제를 잘 읽어보자..
© 2020 JunhoBaik, Built with Gatsby