생각했던 로직
1. 밖에서 number를 생성하고
2. 해당 number에 해당하는 것이 있는지 sb에 contains로 확인
but >> 부분 수열을 가정하고 만들었기 때문에 틀렸음.
1001 이렇게 있어도 11 이렇게만 남을 수 있기 떄문에 1001을 for문으로 붙잡고 포함되었는지를 확인 했어야됐다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String number = br.readLine();
char[] arr = number.toCharArray();
Deque<Character> deque = new ArrayDeque<>();
int k = 1;
for (char a : arr) {
deque.add(a);
}
while (!deque.isEmpty()) {
check(k, deque);
k++;
}
System.out.println(k - 1);
}
public static void check(int number, Deque<Character> deque) {
String targetNumber = Integer.toString(number);
StringBuilder sb = new StringBuilder();
while (!deque.isEmpty()) {
Character now = deque.removeFirst();
sb.append(now);
if (targetNumber.length() == sb.length()) {
if (targetNumber.contains(sb)) {
return;
}
deque.addFirst(now);
return;
}
if (!targetNumber.contains(sb)) {
deque.addFirst(now);
return;
}
}
return;
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String number = br.readLine();
int idx = 0;
//1234
for (int i = 1; ; i++) {
String num = Integer.toString(i);
for (int j = 0; j < num.length(); j++) {
if (idx < number.length() && num.charAt(j) == number.charAt(idx)) {
idx++;
}
}
if (idx >= number.length()) {
System.out.println(i);
return;
}
}
}
}