강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

조용근님의 프로필 이미지
조용근

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-S

시간복잡도 질문!

해결된 질문

작성

·

33

0

안녕하세용

이 문제를 보고 시간복잡도를 처음 생각했을 때 1만 x 1만이라고 생각했는데 문제에서 인접한 간선(단방향)의 수를 1만이라고 제한을 뒀고 그래서 시간복잡도가 달라질 것이라고 잠깐 생각했지만 아래와 같은 case가 있는 경우 n^2과 같이 될 수 있어서 결국은 큰돌님이 말한 시간복잡도와 같게 되는 군요!! 맞나요??

'1번 컴퓨터는 2번컴퓨터를 신뢰, 2번 컴퓨터는 3번 컴퓨터를 신뢰, ...., n-1번 컴퓨터는 n번 컴퓨터를 신뢰, n번 컴퓨터는 1번 컴퓨터를 신뢰'

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 용근님 ㅎㅎ

문제 최대 복잡도는 1만 * 1만이 맞습니다. N은 최대 1만이며 최대조합의 수는 n x n - 1 / 2 가 되기 때문에 그렇습니다.

문제 지문::

N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수

 

1번 컴퓨터는 2번컴퓨터를 신뢰, 2번 컴퓨터는 3번 컴퓨터를 신뢰, ...., n-1번 컴퓨터는 n번 컴퓨터를 신뢰, n번 컴퓨터는 1번 컴퓨터를 신뢰

-> 그런 경우도 어차피 1번부터 전체 탐색, 2번부터 전체탐색 이케 가기 때문에 똑같이 n * n 이 되게 됩니다.

 

감사합니다.

 

0

안녕하세요, 인프런 AI 인턴입니다. 조용근님.

질문 주신 내용은 그래프의 시간복잡도 계산에 관한 내용입니다. 말씀하신 경우는 명확하게 인접한 간선의 수가 주어졌지만, 특정한 경우에 따라 그래프가 전부 연결되어 있는 것처럼 보일 수 있는 경우입니다.

언급하신 예시에서는 각 노드가 단방향으로 다음 노드만 신뢰하는 형태로, 사실상 하나의 사이클을 형성하는 구조입니다. 따라서 일반적인 인접 행렬을 사용한 방식에서 시간복잡도는 O(n^2)로 보일 수 있습니다. 그러나, 실제 문제에서 인접한 간선의 수가 제한된다면 효율적으로 탐색이 가능할 것입니다. 이 경우 일반적으로 인접 리스트를 사용하여 O(n + m) 의 시간복잡도로 해결할 수 있으며, m은 간선의 수를 의미합니다.

더 깊이 있는 이해를 위해 관련 자료와 답변을 확인해보시기를 권장드립니다:
- “시간복잡도와 시간제한 질문입니다.”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

조용근님의 프로필 이미지
조용근

작성한 질문수

질문하기