[백준] 31932. 나는 북극곰입니다

newbieski·2024년 6월 19일
0

백준

목록 보기
214/244

https://www.acmicpc.net/problem/31932

문제 요약

  • N개의 빙하, M개의 얼음다리
  • 얼음다리는 길이가 d, 앞으로 t초후에 무너짐
  • 북극곰은 1번 빙하에서 시작, N번까지 이동
  • 1번 빙하에서 최대한 늦게 출발할 수 있는 시각(=먹을 수 있는 최대 연어)

접근법

  • K초에 출발했다고 치고, N까지 갈 수 있는지 확인해볼 수 있음
  • 각각의 빙하에 최대한 빠르게 간다고 했을 때, 다리를 잘 건너서 N까지 갈 수 있으면 가는거고, 못가면 못 가는 거고
  • K를 이분탐색으로 찾아볼 수 있음(일찍 출발할 수록 유리, 늦게 출발할 수록 불리)

접근법2

  • 그런데 이렇게 생각해 볼 수도 있음
  • N에 연결된 빙하에 늦어도 x초에는 와야함
    • 연결된 다리가 t초에 무너지고 길이가 d이면 연결된 빙하에 늦어도 x=t-d에는 도착해야함
  • 그 다음 연결된 빙하에 도착해야하는 가장 늦은 시간을 알 수 있음
    • 다리의 길이로 반복해서 계산
    • 이때 d거리의 다리가 t시간에 무너지면 이전 빙하에는 늦어도 d-t 시간에 도착해야하므로 이 값보다 늦으면 안됨
    • 계산된 최소 도착시간이 여러개면 가장 큰 값을 택하는 것이 유리
  • 다음 계산할 후보는 도착시간이 가장 큰 것을 선택
  • dijkstra랑 비슷한 접근법이고, 끝점에서 역방향으로, 도착시간이 큰 것부터 선택해서 찾아감
  • 중간에 음수가 나오면 패스
  • 이렇게 해서 1에 늦어도 몇초에 도착하는지 구할 수 있음 => 연어를 이때까지 먹을 수 있음
profile
newbieski

0개의 댓글

관련 채용 정보