나름 고민해서 코드 짜보고 제출했는데 WA 먹었고,
구글링하고 정답 봤는데 내 풀이가 어디를 고려 못했는지 모르겠어서 질문 남김.
입력으로 주어진 W개 사건들 중 최적해는 반드시
case 1) W번째 사건을 1번 경찰차가 맡음
case 2) W번쨰 사건을 2번 경찰차가 맡음
둘 중 하나이니까 case 1)부터 분석해 봤어.
i = 1, 2, ... , W-1 일 때
"i번째 사건을 1번 경찰차가 맡고
그 이후를 모두 2번 경찰차가 맡는 경우들 중 최적해"
들을 전부 비교한 뒤에 거리 합이 최소인 경우를 선택, 2번 경찰차의 위치도 갱신했어.
case 2) 의 경우도 case 1)과 유사하게 코드로 표현했고,
case 1) 과 case 2) 중 더 작은 값으로부터 역추적까지 했어..
로직에 문제가 있을까?
아래는 틀렸던 코드야
https://www.acmicpc.net/source/72061858
감사합니다
i번 사건을 1번경찰차가 맡았다가 i+1번 사건을 2번경찰차가, i+2번 사건을 다시 1번 경찰차가 맡는게 더 이득일 수도 있잖아요
i+2 번 사건을 1번 경찰차가 맡는 경우의 최적해를 구할 때는 1 ~ i+1 루프 돌면서 비교하는데 i번째 계산값이 선택될 거로 기대하고 짰어용
결국에 로직이 그리디 아님? dp스럽게 짯는데 실상은 그리디 같은데 부분최적해 합친다고 전체해가 최적이 되는게 아님