Skip to content

Conversation

@esc10946
Copy link
Contributor

@esc10946 esc10946 commented Jan 28, 2026

🚀 이슈 번호

Resolve: {#2337}

🧩 문제 해결

스스로 해결:

🔎 접근 과정

문제 해결을 위한 접근 방식을 설명해주세요.

  • 🔹 어떤 알고리즘을 사용했는지 : dp
  • 🔹 어떤 방식으로 접근했는지 : 해당 문제에서 행렬을 나누는 방식이 여러개가 있어서 점화식을 구하는데 어려웠습니다.
  • 행렬식 1 - N까지 값을 구하려면 중간값 k(mid)를 정하고 1 - k , k+1 ~ N까지 범위를 나누어 최저값을 구하는 점화식을 설정 했습니다.

⏱️ 시간 복잡도

시간 복잡도 분석을 작성해주세요.
최악의 경우 수행 시간은 어느 정도인지 분석합니다.

  • Big-O 표기법: O(n^3)
  • 이유: 각 반복문이 n번씩 반복하기 때문

💻 구현 코드

#include <bits/stdc++.h>
#define endl "\n"

using namespace std;

int dp[501][501];
int matrix[501][2];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int N; cin >> N;
    for (int i = 1; i <= N; ++i) {
        cin >> matrix[i][0] >> matrix[i][1];
    }

    for (int i = 1; i <= N; ++i) {
        for (int j = 1; i + j <= N; ++j) {
            dp[j][i + j] = INT_MAX;
            for (int k = j; k < i + j; k++)
            {
                dp[j][i + j] = min(dp[j][i + j], dp[j][k] + dp[k + 1][i + j] + matrix[j][0] * matrix[k][1] * matrix[i + j][1]);
            }
        }
    }

    cout << dp[1][N];
    return 0;
}

@esc10946 esc10946 linked an issue Jan 28, 2026 that may be closed by this pull request
@sunha20 sunha20 removed a link to an issue Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants