BOJ 28451 모기 킬러

BOJ 28451 모기 킬러

문제 링크:

문제 내용

생략

문제 풀이

스포일러

여러 개의 그리디를 조합하여 푸는 문제입니다.

먼저, 여러 마리의 모기가 같은 칸에 있으면 체력이 가장 높은 모기만 고려하면 됩니다. 그리고 R동으로 후퇴하는 것은 모기가 다가오면 더 좋은 상황이 될 수 없으므로 선택지에서 제외합니다.

모든 모기가 한 칸 다가오는 것은 하얔이가 한 칸 전진하고 T동이 한 칸 멀어지는 것으로 바꿀 수 있습니다.

이제 언제 스프레이를 뿌리고 언제 전진할지를 골라야 합니다. 당장 전진하더라도 모든 모기를 죽일 수 있다면, 당장 스프레이를 뿌리는 것보다 전진해서 스프레이를 뿌리는 것이 더 많은 모기를 공격할 수 있으므로 이득입니다. 당장 전진했을 때 상황이 바뀌는 모기의 범위는 하얔이의 위치 +1에서 +a+1까지입니다. +1과 +2에는 모기가 있으면 안되고, 나머지 자리에 있는 모기들은 이동 뒤에 남은 거리만큼 공격했을 때 죽일 수 있어야 합니다. (+a+1인 이유는 하얔이가 전진하고 모기도 전진하면 거리가 a-1이 되어 스프레이를 뿌렸을 때에 비해 추가로 뿌릴 기회가 1 감소하기 때문입니다. 그 뒤부터는 스프레이를 뿌릴 기회가 감소하지 않습니다.)

마지막으로 지문에 모호한 지점이 하나 있는데, LL이 1이고 죽일 수 없는 모기가 1의 위치에 있을 때 모기를 무시하고 달려가면 T동에 도착한다고 생각할 수 있지만 -1을 출력해야 합니다.

Last updated on