Skip to content

Commit 77bcf76

Browse files
committed
word break
1 parent 3228d99 commit 77bcf76

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

โ€Žword-break/eunhwa99.javaโ€Ž

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import java.util.List;
2+
3+
4+
// ํ’€์ด
5+
// dfs + memo
6+
// memo[i] = true/false : i ์ธ๋ฑ์Šค์—์„œ ์‹œ์ž‘ํ•ด์„œ wordDict์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ„๋ฌธ์ž์—ด ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š”์ง€ ์œ ๋ฌด
7+
//์‹œ๊ฐ„ ๋ณต์žก๋„: O(n*n) = start~end(์žฌ๊ท€) + start~end(๋ฐ˜๋ณต๋ฌธ)
8+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n) - ์žฌ๊ท€ ๊นŠ์ด
9+
10+
class Solution {
11+
12+
public boolean wordBreak(String s, List<String> wordDict) {
13+
return dfs(0, s.length(), s, wordDict, new Boolean[s.length()]);
14+
15+
}
16+
public boolean dfs(int start, int len, String s, List<String> wordDict, Boolean[] memo){
17+
if(start==len){
18+
return true;
19+
}
20+
21+
if(memo[start]!=null) return memo[start];
22+
23+
for(int end=start+1; end<=len;end++){
24+
if(wordDict.contains(s.substring(start, end))){
25+
if(dfs(end, len, s, wordDict, memo)){
26+
memo[start] = true;
27+
return true;
28+
}
29+
}
30+
}
31+
32+
memo[start]=false;
33+
return false;
34+
35+
}
36+
}

0 commit comments

Comments
ย (0)