Skip to content
Open
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
18 changes: 18 additions & 0 deletions TeamD/김유빈_Climbing Stairs.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
function climbStairs(n: number): number {
if (n <= 2) return n;

let first = 1,
second = 2;

// 첫 번째와 두 번째 계단을 초기화하고, 세 번째 계단부터 시작합니다.
// 첫 번째 계단은 1가지 방법, 두 번째 계단은 2가지 방법으로 올라갈 수 있습니다.
// 이후 각 계단은 이전 두 계단의 방법의 합으로 계산합니다.
for (let i = 3; i <= n; i++) {
const current = first + second;
first = second;
second = current; // 현재 계단에 도달하는 방법의 수를 업데이트합니다.
}

// 마지막 계단에 도달하는 방법의 수를 반환합니다.
return second;
}
23 changes: 23 additions & 0 deletions TeamD/김유빈_House Robber.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
function rob(nums: number[]): number {
const n = nums.length;
if (n === 0) return 0;
if (n === 1) return nums[0];

// 0으로 초기화된 dp 배열 생성
// dp[i]는 i번째 집까지의 최대 금액을 저장
const dp: number[] = new Array(n).fill(0);
dp[0] = nums[0]; // 첫 번째 집을 털었을 때의 금액
dp[1] = Math.max(nums[0], nums[1]); // 첫 번째와 두 번째 집 중 더 큰 금액

// 2번째 집부터 마지막 집까지 반복
for (let i = 2; i < n; i++) {
// 현재 집을 털지 않거나 털 때의 최대 금액 계산
// 털지 않을 때: dp[i - 1]
// 털 때: dp[i - 2] + nums[i]
// 둘 중 큰 값을 선택
dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);
}

// 마지막 집까지 털었을 때의 최대 금액 반환
return dp[n - 1];
}