[DAY44] 동적계획법_도둑질

2019. 9. 20. 20:45개발/알고리즘

반응형

도둑질

문제 설명

도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다.

각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다.

각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요.

제한사항

  • 이 마을에 있는 집은 3개 이상 1,000,000개 이하입니다.
  • money 배열의 각 원소는 0 이상 1,000 이하인 정수입니다.

입출력 예

money return
[1, 2, 3, 1] 4

풀이

  • 접근: 1) 고리 형식이니 처음 거부터 시작, 그다음 거부터 시작 이 두 가지로 나눠서 생각 (근접한 거 접근 불가)
      2) 사이 간격이 1칸 or 2칸일 수 있음
  • 풀이: 1) for 문 돌면서 첫 번째부터 시작 기준 2칸, 1칸 가는 것 중에 돈이 높은 거 추가하도록 반복
       2) for 문 돌면서 두 번째부터 시작 기준 2칸, 1칸 가는 것 중에 돈이 높은 거 추가하도록 반복
       3) 1), 2) 중 돈이 높은 거 리턴

출처 및 전체 소스

반응형