ํฐ์คํ ๋ฆฌ ๋ทฐ
[๋ฌธ์ ]
https://www.acmicpc.net/problem/16500
[ํ์ด]
์๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
https://code-lab1.tistory.com/222
DP๋ก ํ์ดํด์ผ ํ๋ค๋๊ฑธ ์๊ฐํด๋ด์ง ๋ชปํ๊ณ ๊ฒฐ๊ตญ ํ์ด๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.ใ ใ
DP๋ก ๋ง์ง๋ง index๋ถํฐ ๋ฌธ์์ด์ ์๋ผ substring์ ์์ฑํ๊ณ , ํด๋น substring์ด A์ ์งํฉ set์ ํฌํจ๋์ด์๋ค๋ฉด
dp[index] = 1๋ก ๊ฐฑ์ ํฉ๋๋ค. ๋ํ index + 1์ ์์น๋ถํฐ dp ๋๊น์ง ํ์ํ๋ฉฐ 1์ด ์๋ค๋ฉด substring(index, 1์ด ์๋ index)๊ฐ set์ ์กด์ฌํ๋ค๋ฉด dp[index] = 1๋ก ๊ฐฑ์ ํด์ค๋๋ค.
์๋ฅผ ๋ค์ด, s = "abcefg", set = { abc, efg, abce }์ด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค๋ฉด ํ์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- f -> g๊ฐ 1์ธ์ง ํ์ธ X
- e -> fg ์ค์ 1์ด ์๋์ง ํ์ธ -> X (efg ๊ฐ set์ ํฌํจ๋์ด ์์ผ๋ฏ๋ก e์ index์ธ 3์ 1์ ์ ์ฅ : dp[3])
- c -> efg ์ค e์ 1์ด ์์ผ๋ฏ๋ก, c์ index์ธ 2๋ถํฐ e์ index์ธ 3๊น์ง์ substring์ธ c๊ฐ set์ ์กด์ฌํ๋์ง ํ์ธ -> X
์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณต ํ๋ฉฐ a์ ๋๋ฌํ์๋, bcefg์ค์ 1์ด ์๋ e๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก๊ณ ํ์ธํด๋ณธ๋ค๋ฉด substring(0,3)์ abc์ด๊ณ , abc๋ set์ ์กด์ฌํฉ๋๋ค ๋ฐ๋ผ์ dp[0] = 1์ด ๋๊ณ ๋ฐ๋ณต๋ฌธ์ด ์ข ๋ฃ๋ฉ๋๋ค.
dp[0] = 1 ์ด๋ผ๋๊ฒ์ ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋ค๋๊ฒ์ ์๋ฏธํ๋ฏ๋ก 1์ ์ถ๋ ฅํด์ฃผ๋ฉด ๋ฉ๋๋ค.
[์ฝ๋]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int N = Integer.parseInt(br.readLine());
// A ๋ฌธ์์ด์ ์
๋ ฅ ๋ฐ์
Set<String> set = new HashSet<>();
for(int i=0;i<N;i++) {
String word = br.readLine();
if(s.contains(word)) {
set.add(word);
}
}
int[] dp = new int[s.length()];
// ๋ง์ง๋ง index๋ถํฐ ํ์
for(int i=s.length() -1 ;i>=0;i--) {
for(int j=i+1;j<s.length();j++) {
if(dp[j] == 1 && set.contains(s.substring(i,j))) {
dp[i] = 1;
}
}
if(set.contains(s.substring(i))) {
dp[i] = 1;
}
}
System.out.println(dp[0]);
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ฐฑ์ค 5214๋ฒ - ํ์น (0) | 2022.07.18 |
---|---|
[Java] ๋ฐฑ์ค 2011๋ฒ - ์ํธ์ฝ๋ (0) | 2022.07.17 |
[Java] ๋ฐฑ์ค 5430๋ฒ - AC (0) | 2022.07.14 |
[Java] ๋ฐฑ์ค 2110๋ฒ - ๊ณต์ ๊ธฐ ์ค์น (0) | 2022.06.28 |
[Java] ๋ฐฑ์ค 7453๋ฒ - ํฉ์ด 0์ธ ๋ค ์ ์ (0) | 2022.06.28 |
- Total
- Today
- Yesterday
- ํฌํฌ์ธํฐ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- TDD
- ์ฝ๋ฉํ ์คํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์ค node.js
- map
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ๋ ์์ปฌ ํ๊ฒฝ
- ์ด์์ฒด์
- git
- fp
- JavaScript
- ๋์์ธ ํจํด
- ์ด๋ถํ์
- ํ๋กํผํฐ
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ์๊ณ ๋ฆฌ์ฆ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ๋ฐฑ์ค
- ์๋ฐ
- ์ ์ญ ๋ณ์
- ๋คํธ์ํฌ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋กํ ์ฝ
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- Baekjoon
- ๋ฐฑ์ค javascript
- http
- ์นด์นด์ค ์ธํด
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |