Skip to content

Commit 378debb

Browse files
authored
Merge pull request #1259 from clara-shin/main
[clara-shin] WEEK 02 solutions
2 parents 1698b4a + 63e1a6e commit 378debb

File tree

5 files changed

+248
-0
lines changed

5 files changed

+248
-0
lines changed

โ€Ž3sum/clara-shin.jsโ€Ž

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/**
2+
* ๋ฐฐ์—ด์—์„œ ํ•ฉ์ด 0์ด ๋˜๋Š” ์„ธ ์ˆซ์ž๋ฅผ ์ฐพ๊ธฐ
3+
*
4+
* ์š”๊ตฌ์‚ฌํ•ญ & ์ œ์•ฝ์กฐ๊ฑด:
5+
* ์„ธ ๊ฐœ์˜ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์ˆซ์ž๋“ค์˜ ํ•ฉ์ด 0์ด ๋˜์–ด์•ผ ํ•จ
6+
* ๊ฒฐ๊ณผ์— ์ค‘๋ณต๋œ ์กฐํ•ฉ์ด ์—†์–ด์•ผ ํ•จ
7+
* ๋ฐฐ์—ด ํฌ๊ธฐ๋Š” 3์—์„œ 3000๊นŒ์ง€
8+
* ๋ฐฐ์—ด ์š”์†Œ๋Š” -10^5๋ถ€ํ„ฐ 10^5๊นŒ์ง€์˜ ์ •์ˆ˜
9+
*
10+
* ์ ‘๊ทผ๋ฐฉ๋ฒ•:
11+
* 1. ๋ธŒ๋ฃจํŠธํฌ์Šค(์ด์ค‘for๋ฌธ, ์™„์ „ํƒ์ƒ‰) - O(n^3) ์‹œ๊ฐ„๋ณต์žก๋„
12+
* 2. ์ •๋ ฌ ํ›„ ํˆฌ ํฌ์ธํ„ฐ - O(n^2) ์‹œ๊ฐ„๋ณต์žก๋„ โœ…
13+
*
14+
* ๋ฐฐ์—ด์„ ์ •๋ ฌ ํ›„, ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ์š”์†Œ๋ฅผ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋กœ ๊ณ ์ •
15+
* ๊ณ ์ •๋œ ์ˆซ์ž ๋‹ค์Œ๋ถ€ํ„ฐ ~ ๋ฐฐ์—ด ๋๊นŒ์ง€ ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉ โžก๏ธ ๋‚˜๋จธ์ง€ ๋‘ ์ˆ˜์˜ ํ•ฉ์ด ์ฒซ ๋ฒˆ์งธ ์ˆ˜์˜ ์Œ์ˆ˜๊ฐ€ ๋˜๋Š” ์กฐํ•ฉ ์ฐพ๊ธฐ
16+
* ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ์—ฐ์†๋œ ์š”์†Œ๋Š” ์Šคํ‚ต
17+
*/
18+
19+
/**
20+
* @param {number[]} nums
21+
* @return {number[][]}
22+
*/
23+
var threeSum = function (nums) {
24+
const result = [];
25+
const n = nums.length;
26+
27+
if (n < 3) return result;
28+
29+
nums.sort((a, b) => a - b); // ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
30+
31+
if (nums[0] > 0 || nums[n - 1] < 0) return result;
32+
33+
// ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž ๊ณ ์ •
34+
for (let i = 0; i < n - 2; i++) {
35+
// ์ค‘๋ณต๋œ ๊ฐ’ ๊ฑด๋„ˆ๋›ฐ๊ธฐ (์ฒซ ๋ฒˆ์งธ ์ˆซ์ž)
36+
if (i > 0 && nums[i] === nums[i - 1]) continue;
37+
38+
// ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๊ฐ€ ์–‘์ˆ˜๋ฉด for๋ฌธ ํƒˆ์ถœ
39+
if (nums[i] > 0) break;
40+
41+
// ํ˜„์žฌ ์ˆซ์ž์™€ ๊ฐ€์žฅ ์ž‘์€ ๋‘ ์ˆซ์ž์˜ ํ•ฉ > 0 => ํƒˆ์ถœ
42+
if (nums[i] + nums[i + 1] + nums[i + 2] > 0) break;
43+
44+
// ํ˜„์žฌ ์ˆซ์ž์™€ ๊ฐ€์žฅ ํฐ ๋‘ ์ˆซ์ž์˜ ํ•ฉ < 0 => ๊ฑด๋„ˆ๋›ฐ๊ธฐ
45+
if (nums[i] + nums[n - 2] + nums[n - 1] < 0) continue;
46+
47+
// ๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ํˆฌ ํฌ์ธํ„ฐ
48+
let left = i + 1;
49+
let right = n - 1;
50+
51+
while (left < right) {
52+
const sum = nums[i] + nums[left] + nums[right];
53+
54+
if (sum < 0) {
55+
// ํ•ฉ์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด left ํฌ์ธํ„ฐ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
56+
left++;
57+
} else if (sum > 0) {
58+
// ํ•ฉ์ด 0๋ณด๋‹ค ํฌ๋ฉด right ํฌ์ธํ„ฐ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™
59+
right--;
60+
} else {
61+
// ํ•ฉ์ด 0์ด๋ฉด ๊ฒฐ๊ณผ์— ์ถ”๊ฐ€
62+
result.push([nums[i], nums[left], nums[right]]);
63+
64+
// ์ค‘๋ณต๋œ ๊ฐ’ ๊ฑด๋„ˆ๋›ฐ๊ธฐ (๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ ์ˆซ์ž)
65+
while (left < right && nums[left] === nums[left + 1]) left++;
66+
while (left < right && nums[right] === nums[right - 1]) right--;
67+
68+
// ๋‹ค์Œ ์กฐํ•ฉ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ํฌ์ธํ„ฐ ์ด๋™
69+
left++;
70+
right--;
71+
}
72+
}
73+
}
74+
75+
return result;
76+
};
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* ๊ณ„๋‹จ์„ ์˜ค๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๋ช‡ ๊ฐ€์ง€?
3+
* ์ด n๊ฐœ์˜ ๊ณ„๋‹จ
4+
* ํ•œ ๋ฒˆ์— 1๊ณ„๋‹จ ๋˜๋Š” 2๊ณ„๋‹จ์„ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค
5+
* ๊ณ„๋‹จ ๊ผญ๋Œ€๊ธฐ์— ๋„๋‹ฌํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž
6+
*
7+
* โœจ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming)โœจ
8+
* ์žฌ๊ท€ ์ ‘๊ทผ๋ฒ•
9+
* ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์‚ฌ์šฉํ•œ ์žฌ๊ท€
10+
* ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(๋ฐ”ํ…€์—…)
11+
* ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด: n๋ฒˆ์งธ ๊ณ„๋‹จ์— ๋„๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋Š” (n-1)๋ฒˆ์งธ์™€ (n-2)๋ฒˆ์งธ ๊ณ„๋‹จ์— ๋„๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜์˜ ํ•ฉ๊ณผ ๊ฐ™์Œ
12+
*/
13+
14+
/**
15+
* @param {number} n
16+
* @return {number}
17+
*/
18+
function climbStairs(n) {
19+
// ์˜ˆ์™ธ ์ฒ˜๋ฆฌ: n์ด 1 ์ดํ•˜์ธ ๊ฒฝ์šฐ ๋นจ๋ฆฌ 1 ๋ฆฌํ„ดํ•˜๊ณ  ํƒˆ์ถœ
20+
if (n <= 1) {
21+
return 1;
22+
}
23+
24+
// ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๋ณ€์ˆ˜
25+
let first = 1; // f(0) = 1
26+
let second = 1; // f(1) = 1
27+
let result;
28+
29+
// ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ๊ณ„์‚ฐ
30+
for (let i = 2; i <= n; i++) {
31+
result = first + second;
32+
first = second;
33+
second = result;
34+
}
35+
36+
return result;
37+
}
38+
39+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) - n๋ฒˆ์˜ ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰
40+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1) - ์ƒ์ˆ˜ ๊ฐœ์˜ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ
41+
// ์ œ์•ฝ์กฐ๊ฑด์ด n์€ ์ตœ๋Œ€ 45๊นŒ์ง€๋‹ˆ๊นŒ ํ”ผ๋ณด๋‚˜์น˜ ์ ‘๊ทผ๋ฒ•์ด ์ข‹์€ ์„ ํƒ์ธ ๋“ฏ
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* ๋ฌธ์ œ: ๋ฐฐ์—ด์—์„œ ์ž์‹ ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์›์†Œ์˜ ๊ณฑ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ ๊ตฌํ•˜๊ธฐ
3+
* ์ œ์•ฝ์กฐ๊ฑด: ๋‚˜๋ˆ—์…ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํ’€์–ด์•ผ ํ•จ
4+
*
5+
* Brute Force ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๊ฐ ์›์†Œ์— ๋Œ€ํ•ด ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์˜ ๊ณฑ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ,
6+
* ์ด๋Š” O(n^2) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ œ์•ฝ์กฐ๊ฑด์— ์–ด๊ธ‹๋‚จ
7+
*
8+
* O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”,
9+
* ๋‘ ๋ฒˆ์˜ ์ˆœํšŒ๋ฅผ ํ†ตํ•ด ๊ฐ ์›์†Œ์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ๊ณฑ์„ ๋”ฐ๋กœ ๊ณ„์‚ฐํ•œ ํ›„,
10+
* ์ตœ์ข…์ ์œผ๋กœ ๋‘ ๊ณฑ์„ ๊ณฑํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
11+
*
12+
* ์ด ๋ฐฉ๋ฒ•์€ ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ,
13+
* ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์›์†Œ์˜ ์™ผ์ชฝ ๊ณฑ์„ ์ €์žฅํ•œ ํ›„
14+
* ์˜ค๋ฅธ์ชฝ ๊ณฑ์„ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ๊ณฑํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋จ
15+
*
16+
* ์ ‘๊ทผ๋ฐฉ๋ฒ•:
17+
* 1. ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ˆ„์  ๊ณฑ์„ ๊ณ„์‚ฐ (prefix ๊ณฑ).
18+
* 2. ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๋ˆ„์  ๊ณฑ์„ ๊ณ„์‚ฐ (suffix ๊ณฑ).
19+
* 3. ๊ฐ ์œ„์น˜ i์— ๋Œ€ํ•ด i ์œ„์น˜ ์ด์ „๊นŒ์ง€์˜ prefix ๊ณฑ๊ณผ i ์œ„์น˜ ์ดํ›„์˜ suffix ๊ณฑ์„ ๊ณฑํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ
20+
*/
21+
22+
/**
23+
* @param {number[]} nums - ์ž…๋ ฅ ๋ฐฐ์—ด
24+
* @return {number[]} - ๊ฒฐ๊ณผ ๋ฐฐ์—ด (answer[i]๋Š” nums[i]๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์›์†Œ์˜ ๊ณฑ)
25+
*/
26+
var productExceptSelf = function (nums) {
27+
const n = nums.length;
28+
29+
// ์ตœ์ข… ๋ฆฌํ„ด ํ•  ๊ฒฐ๊ณผ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” (O(1) ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์œ„ํ•ด ์ถœ๋ ฅ ๋ฐฐ์—ด๋งŒ ์‚ฌ์šฉ)
30+
const result = Array.from({ length: n }, () => 1);
31+
32+
let leftProduct = 1;
33+
for (let i = 0; i < n; i++) {
34+
result[i] = leftProduct; // ํ˜„์žฌ ์œ„์น˜ ์ด์ „๊นŒ์ง€์˜ ๋ˆ„์  ๊ณฑ ์ €์žฅ
35+
leftProduct *= nums[i]; // ๋‹ค์Œ ์œ„์น˜๋ฅผ ์œ„ํ•ด ํ˜„์žฌ ์›์†Œ ๊ณฑํ•ด์„œ ์ค‘๊ฐ„๊ฒฐ๊ณผ(result) ์—…๋ฐ์ดํŠธ
36+
}
37+
38+
let rightProduct = 1;
39+
for (let i = n - 1; i >= 0; i--) {
40+
result[i] *= rightProduct; // ํ˜„์žฌ ๊ฒฐ๊ณผ์— ์˜ค๋ฅธ์ชฝ ๋ˆ„์  ๊ณฑ์„ ๊ณฑํ•ด์คŒ
41+
rightProduct *= nums[i]; // ๋‹ค์Œ ์œ„์น˜๋ฅผ ์œ„ํ•ด ํ˜„์žฌ ์›์†Œ ๊ณฑํ•จ
42+
}
43+
44+
return result;
45+
};
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* ๋‘ ๋ฌธ์ž์—ด s์™€ t๊ฐ€ ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ(anagram)์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ
3+
* ์• ๋„ˆ๊ทธ๋žจ: ๊ธ€์ž์˜ ๋ฐฐ์—ด ์ˆœ์„œ๋Š” ๋‹ค๋ฅด์ง€๋งŒ ๊ตฌ์„ฑํ•˜๋Š” ๋ฌธ์ž์™€ ๊ฐ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋™์ผํ•œ ๋ฌธ์ž์—ด
4+
*
5+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• ๋ช‡ ๊ฐ€์ง€:
6+
* 1. ์ •๋ ฌ ๋ฐฉ์‹: ๋‘ ๋ฌธ์ž์—ด์„ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•
7+
* 2-1. ๋ฌธ์ž ์นด์šดํŒ… ๋ฐฉ์‹ (๊ฐ์ฒดํ™œ์šฉ): ๊ฐ ๋ฌธ์ž์—ด์— ๋“ฑ์žฅํ•˜๋Š” ๋ฌธ์ž๋“ค์˜ ๋นˆ๋„์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•
8+
* 2-2. ๋ฌธ์ž ์นด์šดํŒ… ๋ฐฉ์‹ (ํ•ด์‹œ๋งต ๊ฐ์ฒดํ™œ์šฉ): ๋ฌธ์ž๋ฅผ ํ‚ค๋กœ, ๋นˆ๋„์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ํ•ด์‹œ๋งต์„ ๋งŒ๋“ค์–ด ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•
9+
*
10+
* ํŒ”๋กœ์šฐ์—… ์งˆ๋ฌธ: ์ž…๋ ฅ์— ์œ ๋‹ˆ ์ฝ”๋“œ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด? ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ์†”๋ฃจ์…˜์„ ์–ด๋–ป๊ฒŒ ์กฐ์ •ํ• ๊บผ์•ผ?
11+
* JavaScript์˜ ๋ฌธ์ž์—ด์€ ๊ธฐ๋ณธ์ ์œผ๋กœ UTF-16์œผ๋กœ ์ธ์ฝ”๋”ฉ๋˜์„œ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
12+
* Map ๊ฐ์ฒด๋Š” ์–ด๋–ค ํƒ€์ž…์˜ ํ‚ค๋„ ํ—ˆ์šฉ โžก๏ธ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Œ
13+
* (๋ฐฉ๋ฒ• 2-1)์˜ ์ผ๋ฐ˜ ๊ฐ์ฒด๋„ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ํ‚ค๋กœ ์ง€์›ํ•˜์ง€๋งŒ, Map์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข€ ๋” ์•ˆ์ „ => ํ•ด์‹œ๋งต์œผ๋กœ ๊ตฌํ˜„ ใ„ฑใ„ฑ
14+
*/
15+
16+
/**
17+
* @param {string} s
18+
* @param {string} t
19+
* @return {boolean}
20+
*/
21+
function isAnagram(s, t) {
22+
// ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๋ฉด ์• ๋„ˆ๊ทธ๋žจ์ด ๋  ์ˆ˜ ์—†์Œ (๋น ๋ฅธ ๋ฆฌํ„ด)
23+
if (s.length !== t.length) {
24+
return false;
25+
}
26+
27+
const charMap = new Map();
28+
29+
// ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž ์นด์šดํŠธ ์ฆ๊ฐ€
30+
for (let char of s) {
31+
charMap.set(char, (charMap.get(char) || 0) + 1);
32+
}
33+
34+
// ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž ์นด์šดํŠธ ๊ฐ์†Œ
35+
for (let char of t) {
36+
const count = charMap.get(char);
37+
38+
// ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ์—†๊ฑฐ๋‚˜ ์นด์šดํŠธ๊ฐ€ 0์ด๋ฉด ์• ๋„ˆ๊ทธ๋žจ์ด ์•„๋‹˜
39+
if (!count) {
40+
return false;
41+
}
42+
43+
charMap.set(char, count - 1);
44+
}
45+
46+
// ๋ชจ๋“  ์นด์šดํŠธ๊ฐ€ 0์ธ์ง€ ํ™•์ธ
47+
for (let count of charMap.values()) {
48+
if (count !== 0) {
49+
return false;
50+
}
51+
}
52+
53+
return true;
54+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (Valid Binary Search Tree) ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ
3+
* ๊ฒ€์‚ฌํ•  ์กฐ๊ฑด 3๊ฐ€์ง€
4+
* 1. ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ ๊ฐ’์€ ๋ฃจํŠธ ๋…ธ๋“œ ๊ฐ’๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค.
5+
* 2. ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ ๊ฐ’์€ ๋ฃจํŠธ ๋…ธ๋“œ ๊ฐ’๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.
6+
* 3. ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋„ ๊ฐ๊ฐ ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ์—ฌ์•ผ ํ•œ๋‹ค.
7+
*/
8+
9+
/**
10+
* Definition for a binary tree node.
11+
* function TreeNode(val, left, right) {
12+
* this.val = (val===undefined ? 0 : val)
13+
* this.left = (left===undefined ? null : left)
14+
* this.right = (right===undefined ? null : right)
15+
* }
16+
* val: ๋…ธ๋“œ๊ฐ€ ์ €์žฅํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.
17+
* left: ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ
18+
* right: ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ
19+
*/
20+
/**
21+
* @param {TreeNode} root
22+
* @return {boolean}
23+
*/
24+
var isValidBST = function (root) {
25+
const searchBST = (node, min, max) => {
26+
if (node === null) return true;
27+
if (node.val <= min || node.val >= max) return false;
28+
return searchBST(node.left, min, node.val) && searchBST(node.right, node.val, max);
29+
};
30+
31+
return searchBST(root, -Infinity, Infinity);
32+
};

0 commit comments

Comments
ย (0)