초기 네이버 기록/알고리즘(C)

백준 트리 1068번 DFS(C언어)

뜨거운 개발자 2023. 1. 4. 00:01

#include<stdio.h>

int count = 0;
dfs(int now_node, int* node, int nodenum,int root)
{
	int check = 0;
	for (int i = 0; i < nodenum; i++)
	{
		if (now_node == node[i])
		{
			check++;
			//printf("i: %d\n", i);
			dfs(i, node, nodenum,root);
		}
	}
	if (check == 0)//now_node>=0&&now_node!=root&&
		count++;
	
}

int main()
{
	int node[50];
	int nodenum,ignore_node;
	int root=100;
	scanf("%d", &nodenum);
	for (int i = 0; i < nodenum; i++)
	{
		scanf("%d", &node[i]);
		if (node[i] == -1)
			root = i;
		
	}
	scanf("%d", &ignore_node);
	//input
	node[ignore_node] = -2;
	if (ignore_node == root||root==100)
	{
		printf("0");
		return(0);
	}
	dfs(root, node, nodenum,root);
	printf("%d", count);
}

스스로 스택을 구현했고 이제 제법 문제가 잘 풀려서 기분이 좋다.

 

이 글은 코딩 꼬꼬마 시절에 푼 문제를 보관한 글로 네이버에 저장해둔 글을 옮긴 글입니다.
혹시나 참고하시는 부분에 이상한 부분이나 질문이 생긴다면 남겨주시면 친절히 답변 드리겠습니다.

728x90