반응형
https://leetcode.com/problems/word-break
class Solution {
boolean[] isChecked;
Map<String, String> hash;
String str;
boolean isComplete = false;
public boolean wordBreak(String s, List<String> wordDict) {
isChecked = new boolean[s.length()];
hash = new HashMap<>();
str = s;
for(String word: wordDict) {
hash.put(word, word);
}
rec(0);
return isComplete;
}
void rec(int start) {
if(isChecked[start]) return;
StringBuffer sb = new StringBuffer();
for(int i=start; i<str.length(); i++) {
sb.append(str.charAt(i));
if(hash.containsKey(sb.toString())) {
if(i+1 == str.length()){
isComplete = true;
return;
}
rec(i+1);
}
}
isChecked[start] = true;
}
}
재귀 + 메모제이션 (DP)
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[프로그래머스] 이중우선순위큐 (0) | 2023.01.01 |
---|---|
[프로그래머스] 정수삼각형 (0) | 2023.01.01 |
[정렬] 문자열 압축 (0) | 2022.08.07 |
[정렬] 오픈채팅방 (0) | 2022.08.07 |
[Heap] 디스크 컨트롤러 (0) | 2022.08.07 |