[코딩테스트] 백준 1068번 트리

2024. 9. 29. 21:26·CS/Algorithm
728x90
반응형

문제 : https://www.acmicpc.net/problem/1068

문제 

노드를 지우면, 자식노드까지 전부 삭제하는 문제이다

입력 & 출력

입력
출력

5

-1 0 0 1 1
1

즉, 이 트리는 루트노드는 아무런 부모를 가지고 있지 않고, 

1번 / 2번 노드는 0번 노드 (루트 노드)를 부모 노드로 가지고 있으며

3번 /4번 노드는 1번 노드를 부모 노드로 가지고 있다.

따라서 1번 노드를 지우게 되면 루트노드와 2번 노드만 남으므로

최종 남는 리프노드의 개수는 1개이다.

1 이 출력된다.

 

풀이

#include <stdio.h>

using namespace std;

int tree[51];
int N;

void deleteA(int x){
    tree[x] = -2;
    for(int i = 0; i < N; i++){
        if(tree[i] == x){
            deleteA(i);
        }
    }


}
int main()
{
    int a;
    int l = 0;
    int flag;

    scanf("%d", &N);

    for(int i = 0; i < N; i++){
        scanf("%d", &tree[i]);
    }

    scanf("%d", &a);

    deleteA(a);

    for(int i = 0; i < N; i++){
        flag = -3;
        for(int j = 0; j < N; j++){
            if( i == tree[j]){
                flag = -1;
            }
        }
        if(flag == -3 && tree[i] != -2) l++;
    }

    printf("%d", l);
    return 0;

}

delateA라는 함수를 통해 어떠한 노드를 삭제하면, 이 노드의 자식노드들까지 재귀적으로 삭제되는 함수를 만들었다.

배열은 그대로 두되, -2라는 삭제된 상태임을 인지하면 노드의 개수를 세지 않아, 최종적으로 몇 개의 리프노드가 남았는지 출력하는 프로그램이다.

 

피드백

거의 자료구조적인 문제로만 풀었는데, DFS를 사용하면 시간을 더 줄일 수 있을 것 같다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > Algorithm' 카테고리의 다른 글

[Greedy Algorithm] Deadline Scheduling  (0) 2024.10.20
Dijkstra Algorithm  (1) 2024.10.20
[Greedy Algorithm] Shortest Path  (0) 2024.10.19
Prim Algorithm Coding  (0) 2024.10.19
[Greedy Algorithms] Minimum Spanning Tree  (0) 2024.10.18
'CS/Algorithm' 카테고리의 다른 글
  • Dijkstra Algorithm
  • [Greedy Algorithm] Shortest Path
  • Prim Algorithm Coding
  • [Greedy Algorithms] Minimum Spanning Tree
min_zu
min_zu
  • min_zu
    민주제도
    min_zu
  • 전체
    오늘
    어제
    • ._. (176)
      • AI (2)
        • DeepLearning (2)
        • CS231n (0)
      • Web (2)
        • ReactJS (0)
      • CS (83)
        • OS (7)
        • Data Structure (23)
        • Computer Architecture (8)
        • Computer Network (20)
        • Algorithm (25)
      • Linux (3)
        • KaliLinux (0)
        • Docker (1)
      • Hacking (83)
        • Write Up (25)
        • Pwnable (13)
        • Reversing (2)
        • Cryptography (12)
        • Web Hacking (4)
        • Window (6)
        • Network (7)
        • Web3 (13)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Linux
    Web
    Tree
    DeepLearning
    Mac
    OS
    DataStructure
    Sort
    AI
    ComputerArchitecture
    WinAFL
    Search
    UTM
    Graph
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
min_zu
[코딩테스트] 백준 1068번 트리
상단으로

티스토리툴바