1010번: 다리놓기

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

     

    1010번: 다리 놓기

    입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.

    www.acmicpc.net

     

    [문제 접근]

    이전에 놓은 다리가 다음에 놓을 다리의 경우의 수를 결정한다. 

    이전의 계산해둔 값을 이후에 써야하기 때문에 다이나믹 프로그래밍(DP)으로 접근해야 한다.

    이중 배열인 DP[N][M]는 서쪽의 N번째 사이트를 동쪽의 M번째 사이트까지 연결할 때 가능한 경우의 수다.

    즉 DP[1][1] = 1;  DP[1][2] = 2; ... ; DP[1][M] = M;이다.

    N=2 이후에 다리를 놓을 수 있는 갯수는 이전에 다리를 어디에 놓았냐에 따라 달라진다.

    즉 하나 이전의 값(N-1)이 동쪽의 어떤 값을 선택(M)하느냐에 따라 이번에 놓을 수 있는 다리의 경우의 수가 정해지므로 DP[N][M] += DP[N-1][1~M-1]과 같다.

    '백준 풀이' 카테고리의 다른 글

    14503번: 로봇 청소기  (0) 2021.12.13
    DP_2748  (0) 2020.08.15
    while_10951  (0) 2020.08.14
    _1002  (0) 2020.08.12
    _10871  (0) 2020.08.11

    댓글