알고리즘/문제풀이

Word Break

lipnus 2022. 9. 4. 18:03
반응형

 

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