공부한 것
- LeetCode #61. Rotate List (링크드 리스트 회전시키기)를 풀었다.
- Abdul Bari의 유튜브 강의 中 Dividing function로 표현된 재귀함수 점화식의 시간복잡도를 구하는 master’s theorem을 짧게 공부하였다. (Master’s theorem이란 한 마디로 마법식 같은 것이었다. 미적분의 기본 정리, 페르마의 정리처럼 해법의 패턴을 정리해놓은 정리이다.)
알게 된 것
- JavaScript에서 클래스에 같은 이름의 속성과 메소드를 동시에 만들 수 없다는 것을 알았다. 예를 들면 다음과 같은 클래스에서:
/** * 주어진 singly-linked list의 정의는 다음과 같다: */ class ListNode { constructor(val, next) { this.val = (val === undefined ? 0 : val); this.next = (next === undefined ? null : next); } // (이 아래부터는 편의를 위해 내가 추가한 메소드) // 이 노드부터 이어진 노드 끝까지의 값들을 배열로 반환 printVals() { // ... } // 이 노드와 이어진 노드들을 깊은 복사하여 반환 deepCopy() { // ... } // 값을 받아 다음 노드로 연결하고 방금 만든 노드 반환 nextVal(num) { // next(num)이라고 할 경우 인식되지 못함. this.next = new ListNode(num); return this.next; } }
처음에
nextVal(num)
메소드를next(num)
라고 이름했는데 없는 메소드라고 하면서 메소드를 호출할 수 없었다. 알아보니 메소드도 본질적으로는 객체에 붙은 속성이기 때문에 중복되는 이름을 가질 수 없는 것이었다..next
라는 속성과.next(num)
이라는 메소드가 만들어진 경우, 오버라이팅이나 오버로딩되지 않고 처음 만든 속성.next
만 생존하는 것 같다.
Uploaded by N2T