Skip to content

Commit 126607d

Browse files
authored
Merge pull request #1356 from JANGSEYEONG/main
[JANGSEYEONG] WEEK 04 solutions
2 parents b992406 + 41be1fb commit 126607d

File tree

5 files changed

+170
-0
lines changed

5 files changed

+170
-0
lines changed

โ€Žcoin-change/JANGSEYEONG.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @param {number[]} coins
3+
* @param {number} amount
4+
* @return {number}
5+
*/
6+
var coinChange = function (coins, amount) {
7+
// f(n) = n์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜
8+
// f(n) = min(f(n), f(n-coin) + 1)
9+
10+
// dp ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”: ๋ชจ๋“  ๊ธˆ์•ก์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ๋™์ „ ๊ฐœ์ˆ˜๋ฅผ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’(amount+1)์œผ๋กœ ์„ค์ •
11+
const dp = new Array(amount + 1).fill(amount + 1);
12+
dp[0] = 0; // 0์›์€ 0๊ฐœ์˜ ๋™์ „์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
13+
coins.forEach((coin) => {
14+
for (let i = coin; i < dp.length; i++) {
15+
// dp[i]: ๊ธฐ์กด์— ๊ณ„์‚ฐ๋œ i์›์„ ๋งŒ๋“œ๋Š” ์ตœ์†Œ ๋™์ „ ๊ฐœ์ˆ˜
16+
// dp[i-coin] + 1: (i-coin)์›์— ํ˜„์žฌ ๋™์ „ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ i์›์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ
17+
dp[i] = Math.min(dp[i], dp[i - coin] + 1);
18+
}
19+
});
20+
// ๋ชฉํ‘œ ๊ธˆ์•ก์„ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜, ๊ฐ€๋Šฅํ•˜๋ฉด ์ตœ์†Œ ๋™์ „ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜
21+
return dp[amount] < amount + 1 ? dp[amount] : -1;
22+
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*var findMin = function (nums) {
2+
while (nums.length !== 1) {
3+
if (nums[0] > nums[nums.length - 1]) {
4+
// ์•ž์—์„œ ํ•˜๋‚˜์”ฉ ์ž๋ฅด๊ธฐ
5+
nums = nums.slice(1, nums.length);
6+
} else {
7+
return nums[0];
8+
}
9+
}
10+
return nums[0];
11+
};*/
12+
/**
13+
* ์œ„์˜ ํ’€์ด์ฒ˜๋Ÿผ ํ’€๋ฉด ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n)์ด ๋˜์–ด๋ฒ„๋ฆผ. ์–‘ ๋์„ ํฌ์ธํ„ฐ๋กœ ๊ฐ€๋ฆฌํ‚ค๋ฉด์„œ ์ด์ง„ํƒ์ƒ‰
14+
*/
15+
/**
16+
* @param {number[]} nums
17+
* @return {number}
18+
*/
19+
var findMin = function (nums) {
20+
let left = 0;
21+
let right = nums.length - 1;
22+
23+
while (left < right) {
24+
let mid = Math.floor((left + right) / 2);
25+
if (nums[mid] > nums[right]) {
26+
left = mid + 1;
27+
} else {
28+
right = mid;
29+
}
30+
}
31+
32+
return nums[left];
33+
};
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {number}
12+
*/
13+
var maxDepth = function (root) {
14+
if (!root) return 0; // ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๊นŠ์ด๋Š” 0
15+
16+
// ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ ๊นŠ์ด๋Š” 1
17+
// ์ž์‹์ด ์•„์˜ˆ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •
18+
let left = 1;
19+
let right = 1;
20+
21+
// ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด ์žฌ๊ท€์ ์œผ๋กœ ๊นŠ์ด ๊ณ„์‚ฐ ํ›„ ํ˜„์žฌ ๋ ˆ๋ฒจ(+1) ์ถ”๊ฐ€
22+
if (root.left) {
23+
left = maxDepth(root.left) + 1;
24+
}
25+
// ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด ์žฌ๊ท€์ ์œผ๋กœ ๊นŠ์ด ๊ณ„์‚ฐ ํ›„ ํ˜„์žฌ ๋ ˆ๋ฒจ(+1) ์ถ”๊ฐ€
26+
if (root.right) {
27+
right = maxDepth(root.right) + 1;
28+
}
29+
// ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ค‘ ๋” ๊นŠ์€ ๊ฐ’์„ ๋ฐ˜ํ™˜
30+
return Math.max(left, right);
31+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode} list1
10+
* @param {ListNode} list2
11+
* @return {ListNode}
12+
*/
13+
var mergeTwoLists = function (list1, list2) {
14+
const answer = new ListNode();
15+
let temp = answer; // answer์€ head๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•จ
16+
17+
// list1, list2 ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋๊นŒ์ง€ ๋„๋‹ฌํ•  ๋•Œ ๊นŒ์ง€ ๋ฃจํ”„ ๋Œ๋ฆฌ๊ธฐ
18+
while (list1 && list2) {
19+
// ๋” ์ž‘์€์ˆ˜๋ฅผ ๊ฐ€์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ์—ฐ๊ฒฐ
20+
if (list1.val < list2.val) {
21+
temp.next = list1;
22+
list1 = list1.next;
23+
} else {
24+
temp.next = list2;
25+
list2 = list2.next;
26+
}
27+
temp = temp.next;
28+
}
29+
30+
// list1, list2 ์ค‘ ์–ด๋–ค๊ฒŒ ๋๊นŒ์ง€ ๊ฐ”๋Š”์ง€ ๋ชฐ๋ผ์„œ ๋‘˜ ๋‹ค ์ฒดํฌ
31+
// ๋‚จ์€๊ฑด ๊ทธ๋ƒฅ ๋’ค์— ๊ฐ€์ ธ๋‹ค๊ฐ€ ๋ถ™์ด๊ธฐ
32+
temp.next = list1 || list2;
33+
return answer.next;
34+
};

โ€Žword-search/JANGSEYEONG.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* @param {character[][]} board
3+
* @param {string} word
4+
* @return {boolean}
5+
*/
6+
// DFS ์‚ฌ์šฉ ์ด์œ : ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋๊นŒ์ง€ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๊ณ , ๊ฒฝ๋กœ๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ๋ฐฉ๋ฌธ ์ƒํƒœ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ
7+
// BFS ๋ถˆ๊ฐ€ ์ด์œ : ์—ฌ๋Ÿฌ ๊ฒฝ๋กœ๋ฅผ ๋™์‹œ์— ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋ฐฉ๋ฌธ ์ƒํƒœ๊ฐ€ ์„ž์—ฌ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ๋กœ๋ฅผ ๋†“์น  ์ˆ˜ ์žˆ์Œ
8+
var exist = function (board, word) {
9+
for (let y = 0; y < board.length; y++) {
10+
for (let x = 0; x < board[0].length; x++) {
11+
// ์‹œ์ž‘์ด ๋˜๋Š” ๋‹จ์–ด๋ฅผ ๋งˆ์ฃผ์น˜๋ฉด dfs ๋Œ๋ ค๋ณด๊ธฐ
12+
if (board[y][x] === word[0] && dfs(board, y, x, word, 0)) {
13+
return true;
14+
}
15+
}
16+
}
17+
return false;
18+
};
19+
20+
function dfs(board, y, x, word, index) {
21+
// ์„ฑ๊ณต ์กฐ๊ฑด: ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ฐพ์•˜์„ ๋•Œ
22+
if (index === word.length) return true;
23+
24+
// ์‹คํŒจ ์กฐ๊ฑด: ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜ ํ˜„์žฌ ๊ธ€์ž๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ
25+
if (
26+
y < 0 ||
27+
y >= board.length ||
28+
x < 0 ||
29+
x >= board[0].length ||
30+
board[y][x] !== word[index]
31+
) {
32+
return false;
33+
}
34+
35+
// ํ˜„์žฌ ์…€ ์‚ฌ์šฉ ํ‘œ์‹œ
36+
const temp = board[y][x];
37+
board[y][x] = true; // ์ž„์‹œ ๋ฐฉ๋ฌธ ํ‘œ์‹œ
38+
39+
// ์ƒํ•˜์ขŒ์šฐ ํƒ์ƒ‰, ํ•˜๋‚˜๋ผ๋„ ์ฐพ๊ฒŒ๋œ๋‹ค๋ฉด true
40+
const found =
41+
dfs(board, y + 1, x, word, index + 1) ||
42+
dfs(board, y - 1, x, word, index + 1) ||
43+
dfs(board, y, x + 1, word, index + 1) ||
44+
dfs(board, y, x - 1, word, index + 1);
45+
46+
// ์›๋ž˜ ๊ฐ’์œผ๋กœ ๋ณต์› (๋ฐฑํŠธ๋ž˜ํ‚น)
47+
board[y][x] = temp;
48+
49+
return found;
50+
}

0 commit comments

Comments
ย (0)