-
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
[jinah92] Week 1 #659
[jinah92] Week 1 #659
Conversation
@jinah92 님 안녕하세요! 아, 그리고 오른쪽 프로젝트에서 기수와 풀이현황을 잘 지정해주셨는데, 주차(Week)도 지정 부탁드립니다~! |
2e52a6e
to
7a94ef7
Compare
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.
풀이하시느라 수고하셨습니다!
아직 시간이 좀 남았으니 Big O 분석을 남겨보시는 걸 추천드립니다
class Solution: | ||
def longestConsecutive(self, nums: List[int]) -> int: | ||
result, last = 0, None | ||
candidates = [] |
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.
candidates라는 배열로 결과값 후보들을 관리하는 대신 result = max(result, candidate)처럼 결과값을 관리하는게 공간 측면에서 효율적일 것 같습니다
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.
넵 최댓값 비교로 관리하는게 더 가독성도 좋고 효율적인 코드 작성이 될 것 같습니다!
@@ -0,0 +1,12 @@ | |||
class Solution: | |||
def topKFrequent(self, nums: List[int], k: int) -> List[int]: | |||
counters = {} |
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.
이왕 파이썬을 쓰실 거라면 collections 모듈의 defaultdict나 counter 컨테이너를 사용하시는게 더 좋을 것 같아요 ㅎㅎ
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.
감사합니다! 제가 주언어는 타입스크립트지만 코테용으로 파이썬이 편리한거 같아서 선택했는데 좋은 기능이 있는지 몰랐네요
|
||
class Solution: | ||
def isPalindrome(self, s: str) -> bool: | ||
replaced_string = re.sub(r"[^a-zA-Z0-9]", "", s).lower() |
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.
python의 isalnum
함수에 대해 찾아보시길 추천 드립니다
def rob(self, nums: List[int]) -> int: | ||
memo = {} | ||
|
||
def getAmount(start: int) -> int: |
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.
이번 기수에서 재귀호출 함수를 이용한 풀이는 처음 봤습니다 ㅎㅎㅎ
해당 풀이를 보면 memoization을 통해 시간복잡도를 최적화 시켰지만, 결국 재귀호출 스택의 깊이만큼 추가적인 공간복잡도가 소요된다는 것을 알 수 있는데요
시간이 좀 남았으니 반복문을 이용한 풀이도 도전해보시면 어떨까요?
재귀호출 풀이 <-> 반복문 풀이로 변환해보는 것은 알고리즘 문제 풀이에 있어서 큰 연습이 됩니다 :)
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.
저는 주로 재귀함수로 풀었는데 이번 기회에 dp로 풀이하는 방법을 알아보는 기회가 되었네요~
if not start < len(nums): | ||
memo[start] = 0 |
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.
여기서 바로 리턴을 해도 되는 게 맞다면, 리턴을 추가하면 가독성과 효율성이 더 좋아질 거 같아요.
if result is not 0: | ||
candidates.append(result) |
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.
위의 조건문으로 보아 result가 0일 때 candidates 배열에 들어갈 일은 없어 보여요. 제가 이해한 게 맞다면, 14번 라인은 필요없을 것 같습니다.
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.
14-15라인은 예외사항에 따라 추가되었습니다.
위 for문에서 가장 마지막 num에 접근하고 그 값이 직전 num보다 1보다 큰 경우, 첫번째 조건문만 타고 for순회문을 나오게 되는데 이 과정에서 candidates
리스트에 추가가 되지 않아 가장 최대 길이보다 1이 적은 결과값을 가지게 됩니다. 따라서 마지막에 누락된 result값을 추가하였습니다.
이 과정은 candidates 배열로 후보군을 업데이트하는 것보단 result 변수 하나만을 가지고 비교할 수 있어, 수정되면 리팩토링이 가능할거 같습니다 :)
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
로 설정해주세요.