예제는 풀리는데 통과가 안된다.
public class Main {
public static void main(String[] args) {
solution("important");
}
public static String[] solution (String str){
int a = str.length();
String[] arr = new String[a];
int c1 = 0;
int c2 = 0;
int c3 = 0;
String abc = "";
// 배열 만드는 과정
for (int i = 0; i < a; i++) {
arr[i] = str.substring(i, a);
}
// 정렬
for (int k = 0; k < a - 1; k++) {
for (int i = 0; i < a - 1; i++) {
boolean flag = false;
c1 = arr[i].length();
c2 = arr[i + 1].length();
// 길이가 짧은 문자열의 길이만큼 긴 문자열을 잘라서 두개가 똑같다면 길이가 긴 문자열이 뒷순서이니 flag 를 true로 바꿔줌
// c3는 짧은 문자열의 길이를 담기 위한 것
if (c1 > c2) {
c3 = c2;
if (arr[i].substring(0, c2).equals(arr[i + 1]) || arr[i].substring(1).equals(arr[i + 1]))
flag = true;
} else {
c3 = c1;
}
// 첫글자부터 길이가 짧은 문자열의 길이만큼 문자열의 각 문자를 비교하여 flag 변경해줌
for (int j = 0; j < c3; j++) {
if(c3 >= 2) {
if (arr[i].charAt(0) == arr[i + 1].charAt(0)) {
if (arr[i].charAt(1) > arr[i + 1].charAt(1)) {
flag = true;
break;
}
if(arr[i].charAt(1) == arr[i + 1].charAt(1))
{
if (arr[i].charAt(2) > arr[i + 1].charAt(2)) {
flag = true;
break;
}
}
}
}
if (arr[i].charAt(j) > arr[i + 1].charAt(j)) {
flag = true;
break;
}
/////////////////////////////
// 이거 안넣어서 계속 틀림........................
else
break;
}
// flag가 true라면 자리 변경
if (flag) {
abc = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = abc;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
return arr;
}
}