2533번 - 사회망 서비스(SNS)
선배님들 혹시 아래 코드에서 반례가 있을 수 있을까요? 게시판에 반례는 전부 정답으로 처리가 되는데,
[자신이 얼리어답터가 아니면 인접(다음)노드는 얼리어답터야 한다] 라는 생각으로
자신이 얼리어탑터일때 / 얼리어답터가 아닐 때를 카운트 해서 작은 쪽을 선택하도록 코딩을 하였는데, 생각이 잘못된건지
아니면 예외를 상정하지 못한건지 계속해서 틀림으로 뜹니다. 혹시 틀린점이 보여 도움을 주신다면 감사하겠습니다ㅠ!!
반례
101 22 32 44 64 56 76 88 98 10
답: 4
출력: 5
깊이 기준으로 홀수 혹은 짝수를 전부 고르는 방법은 전부 전파 되기는 하겠지만 최소 횟수라고 장담할 수는 없습니다.
더 쉬운 반례:
6
1 2
2 3
2 4
4 5
4 6
답:2
출력:3
작성하신 코드는 트리의 아래쪽이 어떻게 되어있는 상관없이 현재 상태만 보고 답을 결정합니다.
뒤 쪽의 상태와 관계없이 항상 정답으로 간다는 보장이 있는 선택지가 있어야만 이러한 알고리즘, 즉 그리디 알고리즘을 적용 할 수 있습니다.
문제를 푸실 때 그리디 보단 동적계획법을 먼저 고려해보시는게 좋을 것 같습니다.
동적계획법을 한번 생각하고 나면, 이 그리디 알고리즘이 합당한가?를 생각할 때 도움이 되기 때문입니다.
바쁜시간내어 도움주셔서 감사합니다 선배님 ㅠㅠ 반례주신걸 그려보고 나서야 왜 안되는지 알게되었네요 조언도 숙지하겠습니다!!
댓글을 작성하려면 로그인해야 합니다.
asci 3년 전
선배님들 혹시 아래 코드에서 반례가 있을 수 있을까요? 게시판에 반례는 전부 정답으로 처리가 되는데,
[자신이 얼리어답터가 아니면 인접(다음)노드는 얼리어답터야 한다] 라는 생각으로
자신이 얼리어탑터일때 / 얼리어답터가 아닐 때를 카운트 해서 작은 쪽을 선택하도록 코딩을 하였는데, 생각이 잘못된건지
아니면 예외를 상정하지 못한건지 계속해서 틀림으로 뜹니다. 혹시 틀린점이 보여 도움을 주신다면 감사하겠습니다ㅠ!!