728x90
반응형
https://www.acmicpc.net/problem/1515
실버3인데 생각보다 어렵게 푼 문제.
dp로 풀었다.
2번을 위해 1번에서 문자열 포함여부를 확인할 때 indexOf 메소드를 이용하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class P1515 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int[] dp = new int[str.length() + 1];
for (int i = 0; i < str.length() + 1; i++) {
dp[i] = 0;
}
dp[0] = 0;
for (int i = 0; i < str.length(); i++) {
String now = String.valueOf(str.charAt(i));
if (dp[i + 1] != 0)
continue;
int min = dp[i] + 1; // 이번 숫자 최솟값
while (true) {
String compareNum = String.valueOf(min);
int idx = -1;
if ((idx = compareNum.indexOf(now)) != -1) {
dp[i + 1] = min;
// 최솟값 찾았으니 다음수도 포함됐는지 확인
for (int j = i + 1; j < str.length(); j++) {
String next = String.valueOf(str.charAt(j));
if (++idx >= compareNum.length())
break;
idx = compareNum.indexOf(next, idx);
if (idx == -1)
break;
dp[j + 1] = min;
}
break;
} else {
min++;
}
}
}
System.out.println(dp[str.length()]);
}
}
728x90
반응형
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 17848번: 진우와 달 여행(Small) (0) | 2023.03.04 |
---|---|
[자바] 백준 19941번: 햄버거 분배 (0) | 2023.03.03 |
[자바] 백준 21921번: 블로그 (0) | 2023.03.01 |
[자바] 백준 2512번: 예산 (0) | 2023.02.28 |
[자바] 백준 20920번: 영단어 암기는 괴로워 (0) | 2023.02.27 |
댓글