-
Notifications
You must be signed in to change notification settings - Fork 126
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
[친환경사과] Week 7 #923
[친환경사과] Week 7 #923
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생많으셨습니다!
* 주어진 문자열에서 반복되는 문자를 포함하지 않은 가장 긴 부분 문자열의 길이를 구하는 문제 | ||
* 이중 반복문을 사용해 바깥 반복문에선 시작 문자를 내부 반복문에선 그 다음 문자를 순회하며 중복된 문자가 발견되었을 때, 반복문 탈출하는 방법으로 문제 해결 | ||
* 시간 복잡도: O(n^2) | ||
* -> 이중 반복 과정 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
O(N^2) -> O(N)으로 최적화해볼 수 있을까요?
|
||
/* | ||
* Node를 역순으로 만드는 문제 | ||
* 추가 저장 공간을 사용해 노드를 채워 둔 뒤 역행하면서 포인터 값을 변경하는 방법으로 해결 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
추가적인 저장 공간을 사용하지 않고도 문제를 해결해보면 좋을 것 같아요
/* | ||
* board에서 0이 발견 되었을 때, 기준 row, column을 모두 0으로 변경하는 문제 | ||
* Set 자료구조를 사용해 중복을 없애고 순회하여 문제 해결 | ||
* 시간 복잡도: O(n^2) (정확히는 O(row * col)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
문제에서 주어진 변수가 m, n으로 명시되어 있으니 O(mn)으로 써주시는게 더 좋을 것 같아요
* 공간 복잡도: O(1) | ||
* -> 중복을 제거한 rowSet, columnSet을 저장하는 공간 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rowSet, columnSet을 사용하고 있으니까 공간 복잡도가 O(1)이 아닐 것 같아요
/* | ||
* 주어진 m,n size board 위에서 좌측 위부터 우측 아래까지 도착하는 Unique path의 개수를 구하는 방법 (m = row size, n = col size) | ||
* 움직일 수 있는 방향이 아래와 오른쪽으로 정해저 있는 상황에서 다음 칸으로 갈 수 있는 방법은 아래와 같음 | ||
* board[i][j] = board[i][j-1] + board[i-1][j] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😄👍👍
|
||
for (i in 1 until m) { | ||
for (j in 1 until n) { | ||
board[i][j] = board[i][j-1] + board[i-1][j] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
한 번 점화식을 잘 살펴봐주세요
이중 for 문 안에서 해당 연산을 수행할 때, 우린 board
의 행 중에서 i
, i-1
두 행만 필요하다는 걸 확인할 수 있습니다
관찰한 바를 토대로 공간 복잡도를 O(mn) -> O(m)으로 최적화할 수 있습니다 :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다음 값에 영향을 미치는 요소가 결괏값 기준 왼쪽, 위쪽 값이 영향을 받네요!
놓진 부분 피드백 주셔서 감사합니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요 친환경사과님 :)
이번 한 주도 정말 수고 많으셨습니다
로직 및 설명이 깔끔해서 리뷰하기 편했습니다
코멘트 남겨놓았으니 병합 전에 꼭 확인 부탁드리고, 최적화 여지가 있는 부분에 대해서도 시간 나실 때 생각해보시면 좋을 것 같아요
감사합니다
답안 제출 문제
체크 리스트
In Review
로 설정해주세요.