Skip to content

Commit de48951

Browse files
committed
add: solve #271 Word Break with ts
1 parent 6bed3de commit de48951

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

โ€Žword-break/Yjason-K.tsโ€Ž

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์ด ๋‹จ์–ด ์‚ฌ์ „์— ์žˆ๋Š” ๋‹จ์–ด๋“ค๋กœ ๋‚˜๋ˆ„์–ด์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
3+
*
4+
*
5+
* @param {string} s - ํ™•์ธํ•  ๋ฌธ์ž์—ด
6+
* @param {string[]} wordDict - ๋‹จ์–ด ์‚ฌ์ „
7+
* @returns {boolean} ๋ฌธ์ž์—ด์ด ๋‹จ์–ด๋กœ ์™„๋ฒฝํžˆ ๋‚˜๋ˆ„์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉด `true`, ์•„๋‹ˆ๋ฉด `false`
8+
*
9+
* ์‹œ๊ฐ„ ๋ณต์žก์„ฑ O(n * m * k)
10+
* - n: ๋ฌธ์ž์—ด s ๊ธธ์ด
11+
* - m: ๋‹จ์–ด ์‚ฌ์ „ ๊ธธ์ด
12+
* - k: ๋‹จ์–ด ์‚ฌ์ „ ๋‚ด ๋‹จ์–ด ๊ธธ์ด
13+
*
14+
* ๊ณต๊ฐ„ ๋ณต์ž ์„ฑ O(n)
15+
* - ๋ฉ”๋ชจ์ด์ œ์ด์…˜(memo) ๋ฐ ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ ํฌ๊ธฐ๊ฐ€ ๋ฌธ์ž์—ด ๊ธธ์ด n์— ๋น„๋ก€.
16+
*/
17+
function wordBreak(s: string, wordDict: string[]): boolean {
18+
const memo: Record<number, boolean> = {};
19+
20+
/**
21+
* @param {number} start - ํ˜„์žฌ ์‹œ์ž‘ idx
22+
* @returns {boolean} ์ฃผ์–ด์ง„ idx ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฉด true
23+
*/
24+
const dfs = (start: number): boolean => {
25+
if (start in memo) return memo[start];
26+
if (start === s.length) return (memo[start] = true);
27+
28+
for (const word of wordDict) {
29+
if (s.startsWith(word, start) && dfs(start + word.length)) {
30+
return (memo[start] = true);
31+
}
32+
}
33+
34+
return (memo[start] = false);
35+
};
36+
37+
return dfs(0);
38+
}
39+

0 commit comments

Comments
ย (0)