자료구조와 알고리듬 With Java/[Study] BAEKJOON 프로그래머스 CodeUp LeetCode

DFS 촌수 찾기 (오류 수정 전)

계란💕 2022. 4. 22. 15:49

  Ex)

<hide/>
import java.util.Scanner;
public class DegreeOfKinship {

/*
입력코드
9
7 3
7
1 2
1 3
2 7
2 8
2 9
4 5
4 6

출력
3
*/
	static int MAX_COUNT = 101;
	static int VCnt;
	static int StartVertax;
	static int TargetVertax;
	static int flag;
	static int[][] AdjMatrix = new int[MAX_COUNT][MAX_COUNT];
	static int[] VisitMarix = new int[MAX_COUNT];
	static int ECnt, uCnt = 0;
	
	public static void main(String[] args) {
		
		Scanner scan  = new Scanner(System.in);
		int uV1, uV2;
		VCnt = scan.nextInt(); 	// 사람 수
		uV1 = scan.nextInt(); 
		uV2  = scan.nextInt(); 
		ECnt = scan.nextInt();	// 관계 수
		
		StartVertax = uV1 <= uV2 ? uV2 : uV1; 	// 큰값에서 시작 
		TargetVertax = uV1 <= uV2 ? uV1 : uV2;	//?? 
	
		for(int i = 1; i <= ECnt; ++i) {
			
				int x = scan.nextInt();
				int y = scan.nextInt();
				AdjMatrix[x][y] = 1;		
				AdjMatrix[y][x] = 1;		
		}
		DFSmethod(StartVertax);
		if(0 == flag ) {
			System.out.println(-1);
		}
	}
	
	public static void DFSmethod(int _CurrVertax) {
	
		VisitMarix[_CurrVertax]= 1;
		for(int i = 1; i <= VCnt; ++i){
			if(TargetVertax == _CurrVertax) {
				flag = 1;
				System.out.println(uCnt);
				return;
			}
			if(1 ==AdjMatrix[_CurrVertax][i] && 0 == VisitMarix[i]  ) {
				++uCnt;
				System.out.printf( "[%d]: %d => %d\n", uCnt, _CurrVertax, i  );
				DFSmethod(i);
			}
		}
	}
}

 

 

 

  Note)  에러 수정하기..

  target