GreatAlgorithm-Study / AlgorithmStudy

🌟알고리즘 대장정🌟
6 stars 4 forks source link

[11주차_목요일] 텀 프로젝트 #147

Closed yeongleej closed 3 hours ago

yeongleej commented 1 week ago
### 🤔 시간복잡도 고려사항

### 💡 풀이 아이디어
baexxbin commented 3 days ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

Jewan1120 commented 3 days ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

yeongleej commented 3 days ago

🤔 시간복잡도 고려사항

=> 최대 O(N log N)으로 생각해보기

💡 풀이 아이디어

int next = g[now];
// 아직 방문하지 않음 -> 사이클 발생 X
if(!visited[next]) {
    dfs(next);
}
// 사이클 발생
else {
     // 사이클 내부 방문
     while(!finished[next]) {
        finished[next] = true;
        next = g[next];
        cnt--;     // 사이클 내부 노드는 팀에 속하는 노드
    }
}
// now 노드는 종료 처리
finished[now] = true;
KodaHye commented 3 days ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

static void dfs(int start, int current) {
    if(check[current]) return;

    // 사이클이 발생한 경우
    if(v[current]) {
        check[current] = true;
        cnt += 1;
    }

    v[current] = true;
    dfs(start, arr[current]);

    check[current] = true; // 확인 표시
    v[current] = false; // 원상복구
}

DFS 함수 만들 때, 조건 설정 & 상태 변화 잘 하기

icegosimperson commented 1 day ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

yeahdy commented 17 hours ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

  1. 학생 한명씩 순회 시작 1-2. 방문하지 않았을 경우 dfs 탐색 진행 1-3. 재방문이지만 이전에 사이클 형성 시도를 완료한 경우 1-4 재방문이고 사이클 형성 시도를 하지 않은 경우 싸이클 만들기 1-5. dfs 탐색이 종료되었을 경우 isFinished 작업 완료 처리
  2. isGrouping 에서 프로젝트 팀에 속하지 못한 학생들 카운팅(false)