[백준] 13325번 이진 트리 (C++)

2025. 10. 1. 18:39·Algorithm
728x90

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

 

 

이 문제는 트리의 높이와 각 노드에서 연결되는 간선에 대한 가중치가 입력되었을때 루트에서 모든 리프노드로 갈때 그 가중치의 합이 같게 만들기 위한 에지들의 가중치 총 합을 출력하는 문제이다.

 

트리 구조이기 때문에 바로 dfs(깊이 우선 탐색)을 사용해야겠다고 생각은 했지만

도저히 접근을 어떻게 해야할줄 몰라서 다른 사람들의 풀이를 보았다.

 

 

자식 노드들의 왼쪽 자식 길이와 오른쪽 자식 길이를 구하여 리턴해주면 그것이 답이 되는것을 확인할 수 있었다.

 

정답코드

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define endl "\n"
#define MAX 1e9

struct coordinate {
    int x;
    int y;
    int r;
};

int dx[] = {-1, 1, 0, 0, 1, -1, -1, 1};
int dy[] = {0, 0, -1, 1, -1, 1, -1, 1};
int K, treesize, answer;
int tree[1 << 22];

int dfs(int Node) {
    if(treesize <= Node) {
        answer += tree[Node];
        return tree[Node];
    }
    else {
        int left = dfs(2 * Node);
        int right = dfs(2 * Node + 1);
        answer += abs(left - right) + tree[Node];
        return tree[Node] + max(left, right);
    }
}

void solve() {
    dfs(1);

    cout << answer;
}

void input() {
    cin >> K;

    treesize = (2 << K) - 1;

    for(int i = 2; i <= treesize; i++) {
        cin >> tree[i];
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    input();
    solve();
}

 

728x90
저작자표시 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준] 1253번 좋다 (C++)  (0) 2025.10.03
[백준] 13905번 세부 (C++)  (0) 2025.10.02
[백준] 3980번 선발 명단 (C++)  (0) 2025.09.30
[백준] 12033번 김인천씨의 식료품가게 (Small) (C++)  (0) 2025.09.29
[백준] 14607번 피자 (Large) (C++)  (0) 2025.09.28
'Algorithm' 카테고리의 다른 글
  • [백준] 1253번 좋다 (C++)
  • [백준] 13905번 세부 (C++)
  • [백준] 3980번 선발 명단 (C++)
  • [백준] 12033번 김인천씨의 식료품가게 (Small) (C++)
쿨쿨.
쿨쿨.
  • 쿨쿨.
    All of the life
    쿨쿨.
  • 전체
    오늘
    어제
    • 분류 전체보기 (281) N
      • Programming (49) N
        • C, C++ (18)
        • Python (6)
        • Java (1)
        • HTML,CSS,JS (3)
        • SQL(DB) (13)
        • SpringBoot (5) N
        • Android (2)
        • CI,CD (1)
      • Algorithm (173)
        • Review (4)
      • Security (14)
        • WebHacking (3)
        • Websecurity (11)
      • OS (19)
        • Linux (12)
        • Mac os (2)
      • 머신러닝 (1)
      • CS(Computer Science) (12)
        • 컴퓨터 네트워크 (3)
        • 컴퓨터 구조 (1)
        • 인공지능 (8)
      • Docker (1)
      • Dev Book Review (3)
        • Clean Code (1)
        • Effective Java (0)
        • Real MySQL (2)
      • SWM (1)
      • Review (6)
      • AWS (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BFS
    이분탐색
    정렬
    DP
    에라토스테네스의 체
    c언어
    시뮬레이션
    다익스트라
    다이나믹 프로그래밍
    트리
    백트래킹
    우선순위큐
    투포인터
    코딩
    깊이우선탐색
    linux
    구현
    그래프 이론
    DFS
    비트마스킹
    재귀
    Bandit
    그리디
    WebSecurity
    백준
    우선순위 큐
    누적합
    wargame
    브루트포스
    Leviathan
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.6
쿨쿨.
[백준] 13325번 이진 트리 (C++)
상단으로

티스토리툴바