• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

시간복잡도 관련 질문입니다.

24.02.06 20:43 작성 조회수 151

1

위 코드에서 for문이 n번 만큼 반복되고 그 안에 있는 while문이 도는 횟수의 총 합이 n번이라고 하셨는데 그렇다면 위 코드의 시간복잡도는 [for문 시간복잡도: o(n)] * [while문의 시간 복잡도 : {o(n-1) + o(n-3) + ... o(1)} ]= o(상수 * n) 이렇게 이해하면 되는 걸까요?

답변 1

답변을 작성해보세요.

0

안녕하세요 gurrl905님

맞습니다 그런 의미로 해석하시면 될 것 같아요. 좀 더 자세히 써보면

 

for 반복 횟수 - while속의 코드 실행 횟수

1번 째 반복: 3번

2번 째 반복: 0번

3번 째 반복: 0번

4번 째 반복: 1번

5번 째 반복: 4번

... : ....

n-1번 째 반복: 1번

n번 째 반복: 0번

 

for이 n 번반복되면서 while속 코드가 실행되는 횟수는 3번 + 0번 + 0번 + 1번 + 4번 + ... + 1번 + 0번 = n번

 

이렇게 되는거에요.

 

 

 

보통 시간복잡도가 O(n^2)으로 되려면

for 반복 횟수 - while속의 코드 실행 횟수

1번 째 반복: n번

2번 째 반복: n번

3번 째 반복: n번

4번 째 반복: n번

5번 째 반복: n번

... : ....

n-1번 째 반복: n번

n번 째 반복: n번

 

이렇게 되거나

 

for 반복 횟수 - while속의 코드 실행 횟수

1번 째 반복: n-1번

2번 째 반복: n-2번

3번 째 반복: n-3번

4번 째 반복: n-4번

5번 째 반복: n-5번

... : ....

n-1번 째 반복: 1번

n번 째 반복: 0번

 

이런 경우에 n^2으로 계산이 됩니다.

 

 

혹시 차이점 이해하셨나요? gurrl905님께서 적어주신거는 O(n^2)일 가능성이 높은것 같아요.

더 궁금한거 있으면 편하게 질문 주세요 :)