Skip to content

Commit 484cede

Browse files
committed
word-break
1 parent c9e4ed2 commit 484cede

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

โ€Žword-break/JANGSEYEONG.jsโ€Ž

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

0 commit comments

Comments
ย (0)