Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 14, 2025

🧷 문제 링크

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

🧭 풀이 시간

20분

👀 체감 난이도

✏️ 문제 설명

N개의 정점으로 높이가 정확히 L인 이진 트리를 만들 수 있는 경우의 수를 구해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • DP
  • 누적 합

$dp[n][h]$를 정점 $n$개로 높이 $h$의 트리를 만드는 경우의 수라고 정의한다.

정점 하나를 루트로 잡고, 나머지 n-1개의 정점으로 왼쪽, 오른쪽 서브트리를 구성할 수 있다.

그러면, $dp[n][h] = dp[k][i] \times dp[n-1-k][h-1] + dp[k][h-1] \times dp[n-1-k][i] - dp[k][h-1] \times dp[n-1-k][h-1]$와 같이 쓸 수 있다. $(0 \le k < n ; 0 \le i < h)$

이를 그대로 구현하면 $O(N^2L^2)$으로 시간 초과일테고, 누적 합으로 $O(N^2L)$로 줄여 해결한다.

⏳ 회고

누적 합 구현이 생각보다 잘 안 돼서 힘들었다.

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Mar 14, 2025
@ShinHeeEul ShinHeeEul merged commit 3155295 into main Mar 14, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants