322.Coin Change
·
Coding Test/LeetCode
난이도: 중간(Medium)Link: LeetCode 322 - Coin Change풀이 날짜: 2025/10/13(못품)1. 문제 이해여러 가지 종류의 동전(coins)과 목표 금액(amount)이 주어졌을 때,가장 적은 수의 동전으로 목표 금액을 만들 수 있는 최소 개수를 구하는 문제다.예를 들어, 위 예시에서 가능한 조합은 다음과 같다.11 = 5 + 5 + 1 (3개)11 = 2 + 2 + 2 + 2 + 2 + 1 (6개)→ 따라서, 최소 개수는 3개가 된다. 그리고, 만약 주어진 동전들로는 금액을 만들 수 없다면, -1을 반환한다. 2. 접근 아이디어 및 자료구조이 문제는 전형적인 Bottom-up DP (Dynamic Programming) 구조를 가진다.핵심은 “금액 i를 만들기 위한 최소 ..
198. House Robber
·
Coding Test/LeetCode
난이도: 중간(Medium)Link: LeetCode 198풀이 날짜: 2025/10/13 1. 문제 이해여러 집이 일렬로 있을 때, 도둑이 인접한 두 집을 동시에 털 수 없다는 규칙 아래에서, 훔칠 수 있는 금액의 최댓값을 구하는 문제다.혼동하지 말아야 할 것은, 연속된 집은 털 수 없지만, 중간에 몇 집을 건너뛰어도 된다는 것이다. 2. 접근 아이디어 및 자료구조이 문제는 전형적인 1D DP 구조를 가지는데, 인접한 집을 털 수 없으므로i번째 집을 털었을 때의 최댓값 = i-2번째까지 턴 최댓값 + 현재 집 금액 이다.i번째 집을 털지 않을 경우 = i-1번째까지 턴 최댓값이 두가지 값을 비교하여 더 큰 값을 누적하는 방식으로 진행한다.이를 점화식으로 표현하면 아래와 같지만, dp[i] = max(d..
70. Climbing Stairs
·
Coding Test/LeetCode
난이도: 쉬움 (Easy)링크: LeetCode 70풀이 날짜: 2025.10.131. 문제 이해한 번에 1계단 또는 2계단을 오를 수 있을 때, n개의 계단을 오르는 서로 다른 방법의 총 수를 구하는 문제이다. 예를 들어,n = 2 → (1+1, 2) → 총 2가지n = 3 → (1+1+1, 1+2, 2+1) → 총 3가지즉, n번째 계단에 도달하는 방법은(n-1)번째에서 한 칸, 또는 (n-2)번째에서 두 칸 올라오는 경우의 합이다.한번더 풀어서 설명하면, n-1 번째까지 오르는 경우의 수 + n-2 번째까지 오는 경우의 수 를 합하면 n번째에 오르는 경우의 수인 것이다.점화식은 dp[i] = dp[i-1] + dp[i-2] 이다. 2. 접근 아이디어 및 자료구조이 문제는 1차원 DP(1Dimensi..
103. Binary Tree Zigzag Level Order Traversal
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 103풀이 날짜: 2025.10.10(다시품)1. 문제 이해 이진 트리의 각 레벨(level)을 좌 → 우, 우 → 좌 순서로 번갈아가며 순회한 결과를 2차원 배열로 반환하는 문제.2. 접근 아이디어 및 자료구조이 문제는 BFS (너비 우선 탐색) 으로 해결할 수 있는데,각 레벨을 queue에 넣고 한 레벨씩 탐색하며,방향을 나타내는 direction 변수를 사용해 순서를 제어하면 된다.direction = 1 → 왼쪽 → 오른쪽direction = -1 → 오른쪽 → 왼쪽한 레벨이 끝날 때마다 direction *= -1로 방향을 반전시키는 것이 포인트.3. 잘못된 접근 (초기 시도)var zigzagLevelOrder = function(root) ..
102. Binary Tree Level Order Traversal
·
Coding Test/LeetCode
난이도: 중간(Medium)링크: LeetCode 102풀이날짜: 2025/10/101. 문제 이해 이 문제는 이진 트리의 각 레벨별 노드 값을 배열 형태로 반환하는 문제로,루트부터 시작해서 같은 깊이에 있는 노드들을 왼쪽에서 오른쪽 순서로 묶어서 리턴해야 한다.2. 접근 방식 및 자료 구조레벨 단위로 탐색하기 위해 BFS(너비 우선 탐색) 을 사용한다.BFS는 큐(Queue)를 활용해 트리를 한 레벨씩 순서대로 순회하기에 적합하므로,큐에 노드를 넣고,같은 레벨의 노드들을 for문으로 순회하면서 group 배열에 담고,자식 노드는 다음 탐색을 위해 다시 큐에 추가하는 구조를 이용한다.3. 시간 및 공간 복잡도시간 복잡도: O(n) → 모든 노드를 한 번씩 방문공간 복잡도: O(n) → 큐에 최대 한 레벨..
637. Average of Levels in Binary Tree
·
Coding Test/LeetCode
난이도: 쉬움 (Easy)링크: LeetCode 637풀이 날짜: 2025/10/09(품) 1. 문제 이해 주어진 이진 트리에서 각 레벨(level)별 노드 값의 평균을 구해야 한다.즉, 루트부터 시작해 같은 깊이의 노드들을 모아 평균을 내고, 이를 배열로 반환한다.2. 접근 방식 및 자료 구조이 문제는 두 가지 방식으로 접근할 수 있는데, 나의 경우 깊이 우선 탐색 방식으로 풀었다. DFS 방식 (깊이 우선 탐색)각 노드를 방문하면서 depth를 추적한다.depth별로 값을 모으기 위해 result를 객체 형태로 관리한다.예: { 0: [3], 1: [9, 20], 2: [15, 7] }모든 노드를 탐색한 후, 각 배열의 평균을 계산한다.BFS 방식 (너비 우선 탐색)큐(queue)를 사용해 레벨 단위..