문자열 내 마음대로 정렬하기 (자바)

김재현·2023년 11월 16일
0

알고리즘 풀이

목록 보기
17/89
post-thumbnail
post-custom-banner

문제

나의 코드(오답)

뭐가 잘못된거지..? 케이스 넣고 돌려보면 잘 나오는데 실패 케이스는 왜 그런지 모르겠다ㅜㅜ

    public String[] solution(String[] strings, int n) {
        String[] answer = {};

        Arrays.sort(strings);
        for (int i = 0; i < strings.length; i++) {
            for (int j = i + 1; j < strings.length; j++) {
                if(strings[i].charAt(n)>strings[j].charAt(n)) {
                    String tmp = strings[j];
                    strings[j] = strings[i];
                    strings[i] = tmp;
                }
            }
        }


        answer = strings;


        return answer;
    }

정답 코드

다른 사람들은 n번째 문자를 앞으로 붙여넣은다음 sorting하고 substring으로 붙여넣은걸 제거하는 방식을 썼다.

그리고 GPT는 나에게 아래와 같은 코드를 줬다.

import java.util.Arrays;

class Solution {
    public String[] solution(String[] strings, int n) {
        Arrays.sort(strings, (a, b) -> {
            if (a.charAt(n) == b.charAt(n)) {
                return a.compareTo(b); 
            } else {
                return Character.compare(a.charAt(n), b.charAt(n));
            }
        });

        return strings;
    }
}

Comparetor는 Java에서 두 객체를 비교하는 데 사용되는 인터페이스입니다. 이 인터페이스는 두 객체를 비교하여 정렬 순서를 결정하는 메서드 compare를 정의합니다. Comparator는 일반적으로 정렬 알고리즘, 검색 알고리즘 등에서 사용됩니다.

Comparator<String> stringComparator = (s1, s2) -> s1.compareTo(s2);

// 또는
Comparator<String> stringComparator = Comparator.naturalOrder();
Comparator<Integer> intComparator = (i1, i2) -> Integer.compare(i1, i2);
profile
I live in Seoul, Korea, Handsome
post-custom-banner

0개의 댓글