-
-
Notifications
You must be signed in to change notification settings - Fork 195
[Sehwan]Added solutions for week1 #13
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
nhistory
commented
Apr 24, 2024
- contains-duplicate
- two-sum
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.
와, 벌써 3문제나 푸셨네요? 조금만 더 화이팅입니다!
// TC: O(n) | ||
// SC: O(n) | ||
|
||
console.log(containsDuplicate([1, 2, 3, 1])); // true | ||
console.log(containsDuplicate([1, 2, 3, 4])); // false | ||
console.log(containsDuplicate([1, 1, 1, 3, 3, 4, 3, 2, 4, 2])); // true |
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.
캬~ 복잡도 분석에 셀프 테스트까지? 멋지십니다! 👏👏👏
valid-anagram/nhistory.js
Outdated
map[s[i]] = map[s[i]] ? map[s[i]] + 1 : 1; | ||
map[t[i]] = map[t[i]] ? map[t[i]] - 1 : -1; |
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.
요렇게 작성하면 좀 더 자바스크립트 답지 않을까 생각해보았습니다.
map[s[i]] = map[s[i]] ? map[s[i]] + 1 : 1; | |
map[t[i]] = map[t[i]] ? map[t[i]] - 1 : -1; | |
map[s[i]] = (map[s[i]] ?? 0) + 1; | |
map[t[i]] = (map[t[i]] ?? 0) - 1; |
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 이름 설정을 #19 처럼 고쳐주시면 좋을 것 같습니다! |
|
if ( | ||
(s[l] >= "a" && s[l] <= "z") || | ||
(s[l] >= "A" && s[l] <= "Z") || | ||
(s[l] >= "0" && s[l] <= "9") | ||
) { | ||
// 4. Check character with right pointer is alphanumeric character or not | ||
if ( | ||
(s[r] >= "a" && s[r] <= "z") || | ||
(s[r] >= "A" && s[r] <= "Z") || | ||
(s[r] >= "0" && s[r] <= "9") | ||
) { | ||
// 5. Compare left and right pointer character | ||
if (s[l].toLowerCase() !== s[r].toLowerCase()) { | ||
return false; | ||
} else { | ||
l++; | ||
r--; | ||
} | ||
// If not, go to next location for right pointer | ||
} else r--; | ||
|
||
// If not, go to next location for left pointer | ||
} else l++; |
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.
@nhistory 님, 코드가 이미 머지가 되었지만 사소한 피드백을 드리고 싶어서 코멘트 드립니다.
이 3중 중첩 조건문에 주석이 없었다면 코드를 바로 이해하기가 쉽지 않을 수도 있었겠다는 생각이 들었습니다.
아무래도 가독성이 떨어지는 코드는 일반적으로 코딩 인터뷰에서 지원자에게 불리하게 작용하거든요.
어떻게 하면 이 부분에서 조건 중첩을 줄일 수 있을지 한번 고민해보시면 좋을 것 같습니다.
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.
@DaleSeo 귀한 피드백 감사드립니다!
중첩 조건문을 줄이는 방법으로 다음과 같이 수정해 보았습니다.
// 2. Iterate while loop with l<r condition
while (l < r) {
// 3. Check left and right pointer has alphanumeric character
while (l < r && !isAlphanumeric(s[l])) l++;
while (l < r && !isAlphanumeric(s[r])) r--;
// 4. Compare left and right pointer character
if (s[l].toLowerCase() !== s[r].toLowerCase()) {
return false;
}
l++;
r--;
}
return true;
};