Skip to content

Commit

Permalink
update post
Browse files Browse the repository at this point in the history
  • Loading branch information
dev-jonghoonpark committed Jul 9, 2024
1 parent 3cdce51 commit 8907e95
Showing 1 changed file with 33 additions and 3 deletions.
36 changes: 33 additions & 3 deletions _posts/2024-02-28-leetcode-139.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
layout: post
title: (Leetcode) 139 - Word Break
title: (Leetcode) 139 - Word Break 풀이
categories: [스터디-알고리즘]
tags: [파이썬, 알고리즘, python, algorithm, Leetcode, DP, word]
tags: [파이썬, 알고리즘, python, algorithm, Leetcode, DP, word, java, 자바]
date: 2024-02-28 12:30:00 +0900
---

Expand Down Expand Up @@ -65,13 +65,43 @@ dp[7]의 경우 뒤를 확인해보면 sand 라는 단어를 가지고 있다.
하지만 이런식으로 좀 더 진행해보면 최종적으로 마지막은 False가 나온다.

### 시간복잡도

- 이중 반복문 사용
- 바깥쪽 반복문 : s의 길이 만큼 반복 (O(n))
- 안쪽 반복문 : wordDict 리스트의 length 만큼 반복 (O(m))

`O(n * m)` 의 시간 복잡도를 가짐

### 공간복잡도

s의 길이만큼 dp 리스트를 생성함

`O(n)` 의 공간 복잡도를 가짐
`O(n)` 의 공간 복잡도를 가짐

## 자바로 다시 풀어보기 (240709)

```java
class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
boolean[] dp = new boolean[s.length() + 1];
dp[0] = true;

for (int i = 1; i <= s.length(); i++) {
for (String word : wordDict) {
if (i >= word.length()) {
int start = i - word.length();
if (dp[start] && s.startsWith(word, start)) {
dp[i] = true;
}
}
}
}

return dp[s.length()];
}
}
```

### TC, SC

s의 길이를 n 이라 하고, wordDict의 크기를 m 이라고 할 때, 시간복잡도는 `O(n * m)` 공간복잡도는 `O(n)` 이다.

0 comments on commit 8907e95

Please sign in to comment.