문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
숫자로 된 문자열 s가 연속으로 두 개 또는 더 많은 명확한 정수 a[1], a[2], ..., a[n]로 나눠지고 다음과 같은 규칙을 만족한다면 아름답다.
아래 다이어그램은 아름다운 문자열을 나타낸다.
각 쿼리는 정수형 문자열 s로 구성되는 q개의 쿼리를 수행해라. 각 쿼리에 대해 문자열이 아름다운지 출력해라. 만약 아름답다면 "YES x"를 출력해라. 이때 x는 연속으로 증가하는 첫 번째 숫자이다. 만약 x의 값이 여러 개가 있다면, 가장 작은 값을 출력해라. 그렇지 않으면 "NO"를 출력해라.
public static void separateNumbers(String s) {
long firstNum = 0;
StringBuilder sb = new StringBuilder();
long currentNum;
for(int i = 1; i <= s.length() / 2; i++){
firstNum = Long.valueOf(s.substring(0, i));
sb = new StringBuilder(String.valueOf(firstNum));
currentNum = firstNum;
while(sb.length() < s.length()){
currentNum++;
sb.append(currentNum);
}
if(sb.toString().equals(s)){
break;
}
}
if(sb.toString().equals(s)){
System.out.println("YES " + firstNum);
}else{
System.out.println("NO");
}
}