1766번 - 문제집
dfs를 이용하여 위상정렬 하여 문제를 풀었습니다.
1. 먼저 풀면 좋은 조건에 따라 그래프를 만들어줍니다.
A B라면, A->B 될 수 있도록 방향 그래프 생성
2. 가장 어려운 문제인 N부터 가장 쉬운 문제인 1까지 차례대로 for문을 돌면서
2-1) 만약, 지금 가리키는 index 문제 번호보다 나중에 풀어야 할 것이 없다면 stack에 넣어주고,
2-2) 그렇지 않고 지금 가리키는 index 문제 번호보다 나중에 풀어야 할 것이 있다면 dfs함수로 점프합니다.
3. dfs함수에서는 위상정렬 알고리즘을 이용합니다.
A-> B
A-> C
우선, A->B 가 아닌 A->C (큰 값부터) 돌 수 있도록 내림차순 정렬을 해주고,
dfs를 돌며 위상정렬을 합니다.
이렇게 해서 제가 직접 test case 만들어보면서 실행했는데
어떠한 반례도 못찾겠습니다 ㅠㅠ
도와주세요
댓글을 작성하려면 로그인해야 합니다.
sujae03 6년 전
dfs를 이용하여 위상정렬 하여 문제를 풀었습니다.
1. 먼저 풀면 좋은 조건에 따라 그래프를 만들어줍니다.
A B라면, A->B 될 수 있도록 방향 그래프 생성
2. 가장 어려운 문제인 N부터 가장 쉬운 문제인 1까지 차례대로 for문을 돌면서
2-1) 만약, 지금 가리키는 index 문제 번호보다 나중에 풀어야 할 것이 없다면 stack에 넣어주고,
2-2) 그렇지 않고 지금 가리키는 index 문제 번호보다 나중에 풀어야 할 것이 있다면 dfs함수로 점프합니다.
3. dfs함수에서는 위상정렬 알고리즘을 이용합니다.
A-> B
A-> C
우선, A->B 가 아닌 A->C (큰 값부터) 돌 수 있도록 내림차순 정렬을 해주고,
dfs를 돌며 위상정렬을 합니다.
이렇게 해서 제가 직접 test case 만들어보면서 실행했는데
어떠한 반례도 못찾겠습니다 ㅠㅠ
도와주세요