-
-
Notifications
You must be signed in to change notification settings - Fork 195
[Invidam] Solve Week01 Problems (5/5) #GoLang #36
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
Conversation
- init map with size. - check exists only in if statement.
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.
정성스러운 PR 설명을 통해서 @Invidam 님께서 어떤 고민을 하셨고, 어떤 다른 풀이들을 시도하셨으며, 그 과정에서 어떤 것들을 배우고 느끼셨는지 한 눈에 볼 수 있어서 참 인상 깊었습니다. 제가 go 언어를 쓸 줄 모르지만 PR 설명을 보면서 코드를 읽으니 대강 이해가 되네요.
디스코드 채널에서 PR 설명을 너무 장황하게 적었나 했다고 하셨는데, 코드에 주석도 적절히 활용하시면 더 좋겠다는 생각을 해봤습니다. 예를 들어, 최종 답안에 대한 복잡도 분석은 각 함수 위에 주석으로 달아놓으시면, 나중에 혹시 PR을 안 보고 코드만 참조하시는 분들에게는 도움이 될 것 같습니다.
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.
PR에 설명을 상세하게 적어주셔서 저도 읽으면서 정리가 된 것 같습니다 ㅎㅎ 다만 달레님 말씀처럼 소스코드에도 주석을 추가해도 좋을 것 같습니다 ㅎㅎ
Contains Duplicate
문제 해결 방법
appeared
)를 집합에 저장한다.자료구조 선택
성능
a8669da$O(N)$ $O(N)$
해시맵을 이용
시간복잡도:
공간복잡도:
개선
또 다른 풀이
정렬 활용 (솔루션 참고)$O(nlogn)$ $O(n)$ (inline)
배열을 정렬한 후, 이전 원소와 비교한다. 이전 원소와 같다면 중복인 것이다.
시간복잡도:
공간복잡도:
(inline: 새로운 메모리 사용이 없음을 표현.)
알게된 것
elem, ok := m[a]
Valid Anangram
문제 해결 방법
문자의 횟수 비교는 많이 봤던 문제.
hash map을 이용하여 빈도 수를 저장하고, 그 차이를 비교한다.
자료구조 선택
hash map
성능
0280206$O(N+M)$ $O(N+M)$
시간복잡도:
공간복잡도:
(N,M은 각각 s,t의 길이)
개선
또 다른 풀이
정렬 한 후 동등 여부를 비교하는 풀이도 있었음. (솔루션 참고)
알게된 것
GoLang은
rune
으로 문자를 저장한다.rune은 int32의 별명이다.
Two Sum
문제 해결 방법
자료구조 선택
성능
cf7e53e$O(N^2)$ $O(N)$
시간복잡도:
공간복잡도:
또 다른 풀이
투포인터 58ad6dc
해쉬 이용 (솔루션 참고) f3f5d84
특이사항
해쉬 충돌이 많아서인지, 투포인터가 더 빨랐다.
알게된 것
배열을 값들과 함께 선언하는 방법.
Valid Palindrome
문제 해결 방법
성능
921f9b9$O(N)$ $O(N)$
시간복잡도:
공간복잡도:
개선
문자열을 더하는 방법
+
연산자: a19cf61특이사항
Mapping Function은 내부적으로 Builder을 사용해서, StringBuilder와 성능이 동일했다.
알게된 것
+
연산자, Mapping Function)과 그들의 성능best-time-to-buy-and-sell-stock
문제 해결 방법
성능
8678b9a$O(N)$ $O(N)$
시간복잡도:
공간복잡도:
(N은 배열의 크기)
개선
또 다른 풀이
59f2aed
특이사항
생각해보니, 비슷한 문제를 "또 다른 풀이"처럼 푼 기억이 있었다. 문제의 도메인(금액 거래)에 너무 매몰되지 말아야겠다.
후기