4일차 - 길찾기

108번뇌·2021년 6월 20일
0

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=4&contestProbId=AV14geLqABQCFAYD&categoryId=AV14geLqABQCFAYD&categoryType=CODE&problemTitle=&orderBy=SUBMIT_COUNT&selectCodeLang=ALL&select-1=4&pageSize=10&pageIndex=2
이문제 특이했다.
1.
보통 BFS펼쳐갈 때 visit방문할 때 전체 배열만큼(arr) 방문하는데,
문제를 읽으면서 방문했던곳 다시 1->4->3가는거나
1->3 가는거나 같으므로 visit를 그냥 1차원 array로 가져갔다.

2.array를 문제에서 그림에서 줬는데 [2][i]형태로 가져가는게 중요하다

#include <iostream>
#include <string.h>
#include <vector>
#include <queue>

using namespace std;

#define start 0
#define end 99

int arr[2][100] = { 0, };
int visit[100] = { 0, };
int answer;

int  bfs(int istart)
{
    queue<int> qTemp;
    visit[istart] = 1;
    qTemp.push(istart);
    while (!qTemp.empty())
    {
        int iStart = qTemp.front();
        qTemp.pop();
        if (iStart == end)
        {
            return 1;
        }

        for (int i = 0; i < 2; i++)
        {
            int nx = arr[i][iStart];
            if (nx >0 && nx < 100 && visit[nx] == 0)
            {
                visit[nx] = 1;
                qTemp.push(nx);
            }
        }
    }
    return 0;
}

void clear()
{
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 100; j++)
        {
            arr[i][j] = 0;
        }
    }

    for (int j = 0; j < 100; j++)
    {
        visit[j] = 0;
    }
}

int main() {

    int test_case;


    for (test_case = 0; test_case <= 10; test_case++) 
    {
        clear();

        int iCnt(0), iExample(0);
        cin >> iCnt >> iExample;
        for (int i = 0; i < iExample; i++)
        {
            int iTemp1, iTemp2;
            cin >> iTemp1 >> iTemp2;

            if (arr[0][iTemp1] == 0)
            {
                arr[0][iTemp1] = iTemp2;
            }
            else
            {
                arr[1][iTemp1] = iTemp2;
            }
        }

        answer = bfs(start);
      


        //출력
        cout << "#" << test_case << " " << answer << "\n";
    }

    //종료
    return 0;
}
profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글