Skip to content

Commit 2c02dcc

Browse files
authored
Merge pull request #1483 from krokerdile/main
[krokerdile] WEEK 07 solutions
2 parents cdd2e31 + 2116fb0 commit 2c02dcc

File tree

5 files changed

+148
-0
lines changed

5 files changed

+148
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
var lengthOfLongestSubstring = function(s) {
6+
let start = 0;
7+
let maxLength = 0;
8+
const seen = new Map(); // 문자 -> 마지막 인덱스
9+
10+
for (let end = 0; end < s.length; end++) {
11+
const char = s[end];
12+
13+
// 중복 문자가 이전에 등장했으면 start를 갱신
14+
if (seen.has(char) && seen.get(char) >= start) {
15+
start = seen.get(char) + 1;
16+
}
17+
18+
seen.set(char, end); // 현재 문자 위치 갱신
19+
maxLength = Math.max(maxLength, end - start + 1);
20+
}
21+
22+
return maxLength;
23+
};

number-of-islands/krokerdile.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
var lengthOfLongestSubstring = function(s) {
6+
let start = 0;
7+
let maxLength = 0;
8+
const seen = new Map(); // 문자 -> 마지막 인덱스
9+
10+
for (let end = 0; end < s.length; end++) {
11+
const char = s[end];
12+
13+
// 중복 문자가 이전에 등장했으면 start를 갱신
14+
if (seen.has(char) && seen.get(char) >= start) {
15+
start = seen.get(char) + 1;
16+
}
17+
18+
seen.set(char, end); // 현재 문자 위치 갱신
19+
maxLength = Math.max(maxLength, end - start + 1);
20+
}
21+
22+
return maxLength;
23+
};

reverse-linked-list/krokerdile.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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} head
10+
* @return {ListNode}
11+
*/
12+
function reverseList(head) {
13+
let prev = null;
14+
let curr = head;
15+
16+
while (curr !== null) {
17+
let nextTemp = curr.next;
18+
curr.next = prev;
19+
prev = curr;
20+
curr = nextTemp;
21+
}
22+
23+
return prev; // prev는 새로운 head
24+
}

set-matrix-zeroes/krokerdile.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/**
2+
* @param {number[][]} matrix
3+
* @return {void} Do not return anything, modify matrix in-place instead.
4+
*/
5+
var setZeroes = function(matrix) {
6+
const m = matrix.length;
7+
const n = matrix[0].length;
8+
9+
let firstRowHasZero = false;
10+
let firstColHasZero = false;
11+
12+
// 첫 행/열에 0이 있는지 확인
13+
for (let i = 0; i < m; i++) {
14+
if (matrix[i][0] === 0) firstColHasZero = true;
15+
}
16+
for (let j = 0; j < n; j++) {
17+
if (matrix[0][j] === 0) firstRowHasZero = true;
18+
}
19+
20+
// 마커로 0 표시
21+
for (let i = 1; i < m; i++) {
22+
for (let j = 1; j < n; j++) {
23+
if (matrix[i][j] === 0) {
24+
matrix[i][0] = 0; // 해당 행 마킹
25+
matrix[0][j] = 0; // 해당 열 마킹
26+
}
27+
}
28+
}
29+
30+
// 마커 기반으로 행/열 0 처리
31+
for (let i = 1; i < m; i++) {
32+
if (matrix[i][0] === 0) {
33+
for (let j = 1; j < n; j++) {
34+
matrix[i][j] = 0;
35+
}
36+
}
37+
}
38+
for (let j = 1; j < n; j++) {
39+
if (matrix[0][j] === 0) {
40+
for (let i = 1; i < m; i++) {
41+
matrix[i][j] = 0;
42+
}
43+
}
44+
}
45+
46+
// Step 4: 첫 행과 첫 열 처리
47+
if (firstRowHasZero) {
48+
for (let j = 0; j < n; j++) {
49+
matrix[0][j] = 0;
50+
}
51+
}
52+
if (firstColHasZero) {
53+
for (let i = 0; i < m; i++) {
54+
matrix[i][0] = 0;
55+
}
56+
}
57+
};

unique-paths/krokerdile.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {number} m
3+
* @param {number} n
4+
* @return {number}
5+
*/
6+
var uniquePaths = function(m, n) {
7+
const memo = {};
8+
9+
function dfs(x, y) {
10+
if (x >= m || y >= n) return 0;
11+
if (x === m - 1 && y === n - 1) return 1;
12+
13+
const key = `${x},${y}`;
14+
if (key in memo) return memo[key];
15+
16+
memo[key] = dfs(x + 1, y) + dfs(x, y + 1);
17+
return memo[key];
18+
}
19+
20+
return dfs(0, 0);
21+
};

0 commit comments

Comments
 (0)