2022 KAKAO BLIND RECURITMENT의 문제였다.
아마 문제 난이도는 그렇게 어렵지 않은 것 같은데 구현하기가 어려웠다.
당연히 DFS로 구현을 해야한다고 생각은 했었지만, 조건을 만족시키는데에 어려움이 있었다.
처음엔 아예 완전탐색으로 구현을 했지만 시간 초과가 날 것 같아서 포기했다.
여러 시도 끝에 해설을 참고하여 풀어보았다.
생각해야 할 관점은 아래와 같다.
- 가장 큰 점수 차를 벌려야 하므로, 쓸데없는 곳에 화살을 낭비하지 않는다.
- 합리적으로 화살을 쏘기 위해 Ryan = Apeach + 1 만 쏘고 넘어가자!
- 만약 남은 화살이 Apeach + 1보다 작거나 같다면, 쏠 필요없이 다음 점수로 넘어가자.
- Tie Break일 때는 가장 작은 점수부터 채우도록 한다. (핵심!)
- 작은 Index부터 이전 답과 현재 답을 비교해서 낮은 쪽 분포가 많은 쪽으로 답을 선택.
__ 반드시 한 번 더 풀어볼 것 !!!__
DFS with Condition