Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Flynn] Week 10 #533

Merged
merged 6 commits into from
Oct 17, 2024
Merged

[Flynn] Week 10 #533

merged 6 commits into from
Oct 17, 2024

Conversation

obzva
Copy link
Contributor

@obzva obzva commented Oct 13, 2024

답안 제출 문제

체크 리스트

  • PR을 프로젝트에 추가하고 Week를 현재 주차로 설정해주세요.
  • 바로 앞에 PR을 열어주신 분을 코드 검토자로 지정해주세요.
  • 문제를 모두 푸시면 프로젝트에서 Status를 In Review로 설정해주세요.
  • 코드 검토자 1분 이상으로부터 승인을 받으셨다면 PR을 병합해주세요.

@github-actions github-actions bot added the go label Oct 13, 2024
@obzva obzva requested a review from HC-kang October 13, 2024 23:24
@obzva obzva marked this pull request as ready for review October 15, 2024 20:22
@obzva obzva requested a review from a team as a code owner October 15, 2024 20:23
Copy link
Contributor

@HC-kang HC-kang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@obzva 님 이번 한 주도 고생 많으셨습니다~


Big O
- N: 주어진 배열 nums의 길이
- Time complexity: O(N)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 시간복잡도가 O(N^2)이지 않을까 생각이 드네요
2중 for문에서 두번째 루프의 경우 nums[i] 가 n - j - 1이라면 순회 횟수를 무시할수 없을것같습니다
혹시 플린님 의견은 어떠실까요?

Copy link
Contributor Author

@obzva obzva Oct 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

희찬님 의견이 맞다고 생각합니다
시간 복잡도 수정해두겠습니다!
풀이 1도 시간복잡도 O(N)으로 최적화가 가능한데, 수정해서 맞춰놓겠습니다
감사합니다 ㅎㅎ

- Time complexity: O(KN)
- K-1 번의 병합을 진행합니다
- i번째 병합 때, 병합하는 두 링크드리스트는 각각 𝚺(n_(i-1)), n_i입니다
이 때 𝚺(n_(i-1))의 상한을 고려한다면 두 링크드리스트의 병합에 걸리는 시간복잡도는 O(N)입니다
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제 시간복잡도 산출결과가 달라서 한참 보다가 알았네요
저는 n을 각 리스트의 평균 길이로 잡았는데, 플린님께서는 N을 전체 노드의 합으로 계산하셨군요
결국 N = nk이니 저와 같은 결과로 산출하신것같습니다..ㅎㅎ

- K: 배열 lists의 길이
- N: 모든 링크드리스트의 노드 개수의 합
- Time complexity: O((logK)N)
- lists를 반으로 쪼개 가면서 재귀호출을 진행하므로 재귀호출은 logK 레벨에 걸쳐 이루어집니다 -> O(logK)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 단순히 절반씩 나누는것만으로도 낭비되는 연산량을 꽤 줄일 수 있네요

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 저도 이 기회에 분할 정복의 효용에 대해 다시 보게 되었습니다.. ㅎㅎㅎㅎ

@obzva obzva merged commit f52334c into DaleStudy:main Oct 17, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
No open projects
Status: Completed
Development

Successfully merging this pull request may close these issues.

2 participants