[Programmers] 혼자 놀기의 달인(Lv.2)

Alice·2023년 6월 20일
0

풀이 소요시간 : 15분

멘탈 회복을 위해 다시 2단계 문제로 돌아왔다. 가장 기본적인 DFS 탐색 문제로 별다른 접근과정이 필요하지는 않았다. 요즘 가시적인 코드 짜기는 익숙해진 느낌이다.

전체코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int Map[101];
int Visit[101];
vector<int> Vector;

void Open_Box(int Num, int Count) {
    
    int Next_Box = Map[Num];
    // Num 번째 상자 속 카드번호
    
    if(Visit[Next_Box] == 0)
    {
        Visit[Next_Box] = 1;
        Open_Box(Next_Box, Count + 1);
    }
    else
    {
        Vector.push_back(Count);
        return;
    }
    
}


int solution(vector<int> cards) {
    
    int N = cards.size();
    for(int i = 1; i <= N; i++)
    {
        Map[i] = cards[i - 1];
    }
    //전역변수 세팅
    
    
    for(int i = 1; i <= N; i++)
    {
        if(Visit[i] == 0)
        {
            Visit[i] = 1;
            Open_Box(i, 1);
        }
    }
    //DFS 탐색
    
    
    sort(Vector.rbegin(), Vector.rend());
    //정렬
    
    if(Vector.size() == 1)
    {
        return 0;
    }
    else
    {
        return Vector[0] * Vector[1];
    }
    //결과 반환
    
}
profile
SSAFY 11th

0개의 댓글