알고리즘 연습

[ 백준_BOJ ] 14501. 퇴사 _ JAVA 문제풀이

코딩하는 너구리 2019. 10. 31. 18:45
반응형

문제

 

 

 

 

풀이

 

 

풀이에 대한 여러 방법을 고민해보았던 문제입니다.

처음에는 2차원 배열을 만들어 DP 방식으로 풀려고 했었는데

로직이 생각보다 간단하고 비교 연산이 많지 않아서 재귀를 이용해 풀이하였습니다.

 

 

일단 가장 많은 금액을 받기 위해 주어진 일수 동안 할 수 있는 모든 경우를 탐색하며

최적의 값을 찾았습니다.

 

 

재귀에서 idx변수는 0번 회의부터 마지막 회의까지 탐색하기 위한 인덱스입니다.

만약 idx번째 회의를 진행할 수 있다면

                    --> 현재 회의에 걸리는 일수가 N보다 작거나 같다면  ( = idx + T[idx] <= N )

해당 회의를 진행시켜보고, 진행시키지 않는 경우도 탐색해주었습니다. ( 완전탐색을 위해 )

 

 

인덱스가 주어진 N일째에 도달했을 때 금액 (= sum)이 가장 큰 경우를

max 함수에 저장하고 출력하여 정답을 찾아주었습니다.

 

 

 

 

 

코드

 

 

 

 

 

 

 

출처

 

 

 

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

 

14501번: 퇴사

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

www.acmicpc.net

 

반응형