Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions climbing-stairs/FEhyoeun.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const cache: number[] = [];

function climbStairs(n: number): number {
if(n === 1) return 1
if(n === 2) return 2;

// cache 값 있을 때
if(cache[n]) return cache[n]

// cache 값 없을 때
cache[n] = climbStairs(n - 1) + climbStairs(n - 2);
return cache[n]
};
22 changes: 22 additions & 0 deletions valid-anagram/FEhyoeun.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
function isAnagram(s: string, t: string): boolean {
let sObj = {}
let tObj = {}

s.split('').sort().map((sChar) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sort()메소드를 사용하면 시간 복잡도가 O(n log n)가 된다고 알고 있습니다.
작성해주신 전체 코드에서 마지막 반환값 순서를 보장하기 위해 sort처리를 하신 것 같은데 다른 방법으로 시간복잡도를 개선할 수 있을 것 같아요!

if(sChar in sObj) {
sObj[sChar] += 1
} else {
sObj[sChar] = 1
}
})

t.split('').sort().map((tChar) => {
if(tChar in tObj) {
tObj[tChar] += 1
} else {
tObj[tChar] = 1
}
})

return JSON.stringify(sObj) === JSON.stringify(tObj)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

반환할때 JSON.stringify() 는 객체 비교를 위해 사용하고 계신 것 같아요.
해당 부부은 비싼 연산이기 때문에 for-loop를 통해서 key,value를 검증하는 것이 더 낫지 않을까? 라는 생각이 드네요 🤔

// 예시 
for (let key in sObj) {
    if (sObj[key] !== tObj[key]) return false
}

그리고 객체 2개가 아닌 1개를 사용해서 해당 문제를 푸는 방법도 있을 것 같아요 : )

};