아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Treasure Hunter

면접 대비

시간 제한1초메모리 제한1024 MB

요약
m×n 격자에 있는 k개의 보물 칸이 주어질 때, (1,1)에서 (m,n)까지 오른쪽과 아래로만 이동하는 경로 여러 개로 모든 보물을 덮는 최소 경로 수를 구한다.
난이도

보통10점 중 6점

유형
정렬, 그리디, 동적 계획법, 배열
정답자
아직 제출이 없습니다

문제

철수는 m×nm \times n 격자의 각 칸 위치로 표시된 kk개의 보물 위치가 적힌 보물 지도를 가지고 있다. 지도에서 입구와 출구를 제외한 모든 위치는 사람이 접근하기 어렵기 때문에, 철수는 보물 사냥 로봇(THR)을 이용해 보물에 접근하여 수집하려고 한다. THR은 항상 입구 칸 (1,1)(1, 1)에서 출발하여 출구 칸 (m,n)(m, n)으로 나간다. 여기서 (i,j)(i, j)는 ii번째 행, jj번째 열의 칸을 나타낸다. 또한 THR은 현재 칸에서 바로 오른쪽 또는 아래로만 이동할 수 있고, 출구 칸에 도착한 뒤에는 다시 사용할 수 없다. 다음 그림은 m=3m = 3, n=5n = 5, k=4k = 4인 경우의 예이다. 그림에서 XX는 보물이 있는 칸을 나타낸다.

(1, 1)
XX
XXXXXX(3, 5)

위 예에서 THR이 (1,1)(1, 1), (2,1)(2, 1), (3,1)(3, 1), (3,2)(3, 2), (3,3)(3, 3), (3,4)(3, 4), (3,5)(3, 5) 순서로 칸에 접근하면, 출구 칸 (3,5)(3, 5)에 도착한 뒤 세 개의 보물((3,1)(3, 1), (3,2)(3, 2), (3,4)(3, 4)에 있는 보물)을 수집한다. 이때 (2,3)(2, 3) 위치의 보물을 수집하려면 THR을 하나 더 사용해야 한다. mm, nn, kk와 서로 다른 kk개의 보물 위치가 주어질 때, 지도 위의 모든 보물을 수집하기 위해 필요한 THR의 최소 개수를 구하는 프로그램을 작성하시오.

입력

프로그램은 표준 입력에서 입력을 읽는다. 입력의 첫 줄에는 세 정수 mm, nn, kk가 주어진다(1≤m,n,k≤100,0001 \le m, n, k \le 100,000). mm은 행의 수, nn은 지도의 열의 수, kk는 지도 위의 보물의 수이다. 다음 kk개의 줄에는 서로 다른 kk개의 보물 위치가 두 정수로 주어지며, 두 정수는 각각 지도에서의 행 위치와 열 위치를 나타낸다.

출력

프로그램은 표준 출력에 출력을 쓴다. 정확히 한 줄을 출력한다. 그 줄에는 지도 위의 모든 보물을 수집하기 위해 필요한 THR의 최소 개수를 출력한다.

예제2

  1. 예제 1

    입력
    3 5 4
    3 1
    3 2
    2 3
    3 4
    
    예상 출력
    2
    
  2. 예제 2

    입력
    7 8 10
    3 1
    3 2
    3 4
    2 6
    3 7
    3 8
    4 8
    5 3
    5 4
    5 5
    
    예상 출력
    3