Conversation
| get(key) { | ||
| const node = this.#items.find((item) => item.key === key); | ||
|
|
||
| return node?.item; | ||
| } |
There was a problem hiding this comment.
get(key) {
return this.#items.find((item) => item.key === key)?.item;
}이렇게 더 많이 쓰긴 합니다. 왜냐하면 node라는 변수 혹은 상수를 사용하는 순간
get(key) {
const node = this.#items.find((item) => item.key === key);
// 여기에 다른 누군가가 node를 가지고 무언가를 할 수 있는 가능성이 생김.
return node?.item;
}그래서 아예 그런 의도를 차단할려면 변수를 생성하지 않는게 좋을 수도 있습니다
There was a problem hiding this comment.
요즘 습관적으로 변수 선언해서 값을 받은 다음 리턴하는 구조로 코드를 작성하고 있는데, 말씀해주신 대로 변수를 선언할 경우 다른 사람이 선언한 변수를 이용할 가능성도 있겠네요! 감사합니다
| const curIndex = this.#findIndex(key); | ||
|
|
||
| if (curIndex >= 0) { | ||
| this.#items[curIndex].item = item; | ||
|
|
||
| return; | ||
| } |
There was a problem hiding this comment.
const curIndex = this.#findIndex(key);
if (curIndex >= 0) {
this.#items[curIndex].item = item;
return;
}개인적인 의견이지만, 이 사이는 붙이는게 좋은 것 같아요. 바로 위 코드랑 연관이 높고, 나온 값에 대해서 처리를 하는거라서 붙이는게 좋은 것 같아요. 아마 제가 Golang을 사용해서 영향을 받은 것도 있는 것 같기도 하고요. Golang에서는 이런 문법은 많이 쓰거든요.
data, err := getSomething
if err == nil {
return
}There was a problem hiding this comment.
이것도 제 습관이네요 ㅠ
변수 선언하고 항상 한 줄 씩 띄우고 있었는데, 코드가 연관될 경우 라인을 붙이는 것도 좋은 것 같습니다! 감사합니다
| keysRange(start, end) { | ||
| const i = this.rank(this.ceiling(start)); | ||
| const j = this.rank(this.floor(end)); | ||
|
|
||
| if (i > j || i < 0 || j >= this.#n) { | ||
| return []; | ||
| } | ||
|
|
||
| const keys = []; | ||
|
|
||
| for (let k = i; k <= j; k++) { | ||
| keys.push(this.#keys[k]); | ||
| } | ||
|
|
||
| return keys; | ||
| } |
There was a problem hiding this comment.
주어진 시작 키보다 큰 수 중에 가장 작은 수의 위치, 주어진 끝 키보다 작은 수 중에 가장 큰 키의 위치를 구해서, 해당 구간의 모든 키 목록을 반환하는거군요 ㅎㅎ 기존 메서드를 활용해서 구현해 주셨네요
There was a problem hiding this comment.
네 ㅎㅎ ceiling이랑 floor 메서드를 이용하면 되겠네! 라는 생각이 순간적으로 들어서 구현했는데, 잘 되더라구요!
변수명이 i, j로 작성되어 있어서 가독성이 떨어지네요 ..!
일주일이나 늦었지만 PR 올립니다!
problem-3 이진 탐색 트리 그림
problem-5 개별 체이닝 해시 테이블 그림