학부 내용 정리/[ 2-2 ] 알고리즘

[ 알고리즘 ]Dynamic Programming : Select Working Days , Path counting

haena02 2022. 10. 18. 05:15
반응형

1. Select Working Days

 

1.1 문제정의

  • N일의 각각 Pay가 지정되어있다.
  • 가장 돈을 많이 벌 수 있도록 일하는 날짜를 골라야한다.
  • 연속근무는 불가하다.

 

2. solution

X는 그날 일을 안했을 때, 그날까지 벌 수 있는 최대의 돈이다.

O는 그날 일을 했을 때, 그날까지 벌 수 있는 최대의 돈이다.

solution

노란색으로 색칠한 것은, 결과가 나온 후 역추척한 것이다.

 

3. Code

Code

이 코드는 내용을 모르면 알아보기 쉽지 않다. 

 

열 인덱스 0: 그 날 일을 안하는 것중에 제일 좋은 것

열 인덱스 1: 그 날 일을 하는 것중에 제일 좋은 것

 

배열 생성하고 첫 날 일을 할 때&안할 때의 초기값을 넣어준다.

day2부터 계산한다.

그 날 일을 안할 때 = MAX(그 전날 일 할때 , 그 전날 일 안할때)

그 날 일을 할 때 = 그 전날 일을 안했을 때 Pay + 오늘 일의 Pay

 

max값을 리턴한다.

 

 

2. Path counting

Path counting

 

반응형