Rylah's Study & Daily Life

04. [S/W 문제해결 기본] 4일차 - 길찾기 (1219) 본문

SW Expert Academy/Programming Intermediate

04. [S/W 문제해결 기본] 4일차 - 길찾기 (1219)

Rylah 2021. 11. 19. 17:44

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14geLqABQCFAYD 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

#include <iostream>
#include <cstring>
using namespace std;

int arrayNode[100][2];

int dfs(int num,int select){
    if (arrayNode[num][select] == 99)
    	return 1;
    	
    if (arrayNode[num][select] == 0)
    	return 0;

    
	if (dfs(arrayNode[num][select], 0))  // 첫번째 배열 순서쌍부터 점검 
		return 1;
   
    return dfs(arrayNode[num][select], 1); // 두번째 순서쌍을 그 뒤에 
}

int main(int argc, char** argv) {
	freopen("input (15).txt", "r", stdin);
    for (int t = 1; t <= 10; t++) {
    	memset(arrayNode, 0, sizeof(arrayNode)); // 배열 초기화, ctring 헤더 필요
		 
        int testCaseNum, nodeLength;
        cin >> testCaseNum >> nodeLength; // testCaseNum과 입력값의 노드 길이 입력 
        for (int i = 0; i < nodeLength; i++) { //순서쌍 입력
            int inputX, inputY;
            cin >> inputX >> inputY;
            if (arrayNode[inputX][0] != 0) {
            	arrayNode[inputX][1] = inputY;
            	continue; //입력을 완료했으니 한번 루프는 건너뜀 
            }
            // 위 조건이 아니라면 일반적인 0번항에 삽입 
            arrayNode[inputX][0] = inputY;
            
        }
        cout << "#" << testCaseNum << " " << dfs(0, 0) << endl;
        
    }
    return 0;
}