Skip to content

Commit 8c9c8bd

Browse files
authored
Merge pull request #1441 from hsskey/main
[hsskey] Week 06 Solutions
2 parents 6a88b83 + 116b16f commit 8c9c8bd

File tree

5 files changed

+150
-0
lines changed

5 files changed

+150
-0
lines changed

container-with-most-water/hsskey.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {number[]} height
3+
* @return {number}
4+
*/
5+
var maxArea = function(height) {
6+
let result = 0
7+
let l = 0;
8+
let r = height.length - 1;
9+
10+
while(l < r) {
11+
const area = (r - l) * Math.min(height[l], height[r]);
12+
result = Math.max(result, area);
13+
14+
if(height[l] < height[r]) {
15+
l += 1;
16+
} else {
17+
r -= 1;
18+
}
19+
}
20+
return result
21+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
class TrieNode {
2+
constructor() {
3+
this.children = {};
4+
this.word = false;
5+
}
6+
}
7+
8+
class WordDictionary {
9+
constructor() {
10+
this.root = new TrieNode();
11+
}
12+
13+
addWord(word) {
14+
let cur = this.root;
15+
for (let c of word) {
16+
if (!cur.children[c]) {
17+
cur.children[c] = new TrieNode();
18+
}
19+
cur = cur.children[c];
20+
}
21+
cur.word = true;
22+
}
23+
24+
search(word) {
25+
const dfs = (j, root) => {
26+
let cur = root;
27+
for (let i = j; i < word.length; i++) {
28+
const c = word[i];
29+
if (c === '.') {
30+
for (let child of Object.values(cur.children)) {
31+
if (dfs(i + 1, child)) {
32+
return true;
33+
}
34+
}
35+
return false;
36+
} else {
37+
if (!cur.children[c]) {
38+
return false;
39+
}
40+
cur = cur.children[c];
41+
}
42+
}
43+
return cur.word;
44+
};
45+
return dfs(0, this.root);
46+
}
47+
}
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var lengthOfLIS = function(nums) {
6+
const lis = new Array(nums.length).fill(1);
7+
8+
for(let i = nums.length - 2; i >= 0; i--) {
9+
for(let j = i + 1; j < nums.length; j++) {
10+
if(nums[i] < nums[j]) {
11+
lis[i] = Math.max(lis[i], 1 + lis[j])
12+
}
13+
}
14+
}
15+
return Math.max(...lis)
16+
};

spiral-matrix/hsskey.js

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* @param {number[][]} matrix
3+
* @return {number[]}
4+
*/
5+
var spiralOrder = function(matrix) {
6+
if (matrix.length === 0) return [];
7+
8+
const res = [];
9+
let left = 0, right = matrix[0].length;
10+
let top = 0, bottom = matrix.length;
11+
12+
while (left < right && top < bottom) {
13+
// 상단 행 왼쪽 → 오른쪽
14+
for (let i = left; i < right; i++) {
15+
res.push(matrix[top][i]);
16+
}
17+
top += 1;
18+
19+
// 오른쪽 열 위 → 아래
20+
for (let i = top; i < bottom; i++) {
21+
res.push(matrix[i][right - 1]);
22+
}
23+
right -= 1;
24+
25+
if (!(left < right && top < bottom)) break;
26+
27+
// 하단 행 오른쪽 → 왼쪽
28+
for (let i = right - 1; i >= left; i--) {
29+
res.push(matrix[bottom - 1][i]);
30+
}
31+
bottom -= 1;
32+
33+
// 왼쪽 열 아래 → 위
34+
for (let i = bottom - 1; i >= top; i--) {
35+
res.push(matrix[i][left]);
36+
}
37+
left += 1;
38+
}
39+
40+
return res;
41+
};

valid-parentheses/hsskey.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
var isValid = function(s) {
6+
const stack = []
7+
8+
const pair = {
9+
')' : '(',
10+
'}' : '{',
11+
']' : '['
12+
}
13+
14+
for (let item of s) {
15+
// 여는 괄호
16+
if(item === '(' || item === '{' || item === '[') {
17+
stack.push(item)
18+
// stack길이가 0 or 닫는 괄호 케이스
19+
} else if (stack.length === 0 || stack.pop() !== pair[item]) {
20+
return false
21+
}
22+
}
23+
24+
return stack.length === 0
25+
};

0 commit comments

Comments
 (0)