백준 14501 퇴사 - JAVA

삼성 SW 역량테스트 기출문제 - 퇴사를 풀어보았다.

퇴사(이직) 준비하는 나에게 걸맞는 문제가 아닐까 싶다.,,

 

 

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

 

14501번: 퇴사

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

www.acmicpc.net

 

문제 난이도는 그렇게 높지 않다.

완전 탐색이든 DP 로든 풀 수 있다.

 

완전 탐색은 

	public static void dfs(int d, int idx, int sum){
		if(d==N){
			if(sum>Max){
				Max = sum;
			}
			return ;
		} if(idx==N) {
			if(sum>Max){
				Max = sum;
			}
			return ;
		}
		else {
			int flag = 0;
			for(int i=idx;i<N;i++){
				if(!visited[i] && i+ti[i]<=N){
					visited[i] = true;
					dfs(d+1, i+ti[i], sum+pi[i]);
					visited[i] = false;
					flag =1;
				}
			}
			if(flag==0){
				if(sum>Max){
					Max = sum;
				}
				return ;
			}
		}
	}

의 형태로 돌려주면 되고, 코드는 DP로 구현하였다.