Processing math: 100%

ABOUT ME

소소하게 평범하고 싶은 블로그

Today
Yesterday
Total
  • [백준 14556] Balance
    코딩 2022. 9. 7. 22:54
    728x90

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

     

    이 문제를 읽고 생각한 뒤, 처음 생각한 점화식은 이거였다.

    점화식: (n번째 추를 먼저 놓는다 가정했을 때)

    f(n)=ni=1{n1Pi12i1f(ni)},f(1)=1

    근데 이 풀이는 시간 초과가 났다. 가만 생각해 보니 O(n3) 이어서 시간이 상당히 오래 걸렸다.

     

    살짝 발상을 바꾼 점화식) i번째 추를 마지막에 놓는다 생각한다면, n번째 추는 놓을 곳이 1군데밖에 없으므로 f(n1), i번째 추는 놓을 곳이 2군데이므로 2f(n1),  
    이를 1...n까지 전부 더하면 f(n1)이 (2n1)개 있게 되므로,
    f(n)=(2n1)f(n1),f(1)=1
    과도 나타낼 수 있다.

     

    다른 말로 하자면 1,3,5,...2n1까지의 홀수를 다 곱한 것이다
     f(n)=ni=1(2i1)

    또는
     f(n)=(2n)!n!2n

     

    이 3개의 식은 모두 같은 뜻이며 O(n)에 동작한다.

    생각의 순서만 바뀌었는데 풀이가 완전히 달라지는 게 개인적으로 재밌었던 문제였다.

    728x90

    '코딩' 카테고리의 다른 글

Designed by Tistory.