(알고리즘) 문자열 내 마음대로 정렬하기

코딩을 합시다·2022년 12월 16일
0
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
class Solution {
    public ArrayList solution(String[] strings, int n) {
        ArrayList<String> arr = new ArrayList<String>();
        for (int i=0; i<strings.length; i++) {
            if (arr.contains(String.valueOf(strings[i].charAt(n)))) {

            } else {
                arr.add(String.valueOf(strings[i].charAt(n)));
            }
        }
        Collections.sort(arr);

        ArrayList<String> arr3 = new ArrayList<String>();
        ArrayList<String> arr4 = new ArrayList<String>();
        for (int i=0; i<arr.size(); i++) {
            for (int j=0; j<strings.length; j++) {
               if (arr.get(i).equals(String.valueOf(strings[j].charAt(n)))) {
                   arr4.add(strings[j]);
               }
            }
            if (arr4.size() >= 2) {
                Collections.sort(arr4);
            }
            for (int k=0; k<arr4.size(); k++) {
                arr3.add(arr4.get(k));
            }
            arr4.clear();
        }
        return arr3;
    }
}

먼저 arr에 n번째의 값(e, b, a, u 등)을 넣는다.
Collections.sort(arr); 를 이용해 n번째 값을 사전식으로 순서를 맞춰주고
다시 arr3과 arr4을 만들고
arr값과 비교해 arr4에 비교한 값을 넣어준다.
여기서 중요하다 arr4에 값이 2개 이상 들어왔다면 n번째 값이 같았던 문자열이 2개 이상 있었단 뜻으로 (abce, abcd 등) 이 값들이 있는 arr4를 다시 Collections.sort(arr4);로 사전식으로 맞춰주는게 중요하다.
그리고 이 arr4를 차례대로 arr3에 넣어주고 arr4.clear()해주는걸 반복하면 쉽게 문제를 풀 수 있다.

0개의 댓글