본문 바로가기
카테고리 없음

항해 99일차 12일차 TIL(문자열 내 마음대로 정렬하기/ 프로그래머스)

by 순원이 2024. 4. 8.

문제         

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1 번째 시도   

 

위 문제는 문자열을 정렬할 수 있냐는 묻는 직관적인 문제다. 다만 아주 조금 어려운점이 있다면 String 내에 특정 문자까지들끼리도 비교해야 한다는 것이다.

Arrays.sort()는 시간복잡도가 O(nlogn)이다.
절반을 다시 나누는 과정이 로그 시간(logn)에 해당하며, 각 단계에서 모든 원소에 대해 정렬을 수행하는 데 선형 시간(n)이 소요되므로, 전체 시간 복잡도는 O(nlogn)이 됩니다.

import java.util.*;

class Solution {
    public String[] solution(String[] strings, int n) {
        
        Arrays.sort(strings, new Comparator<String>(){
            @Override 
            public int compare(String s1, String s2) {
                if(s1.charAt(n) == s2.charAt(n))
                    return s1.compareTo(s2);
                return s1.charAt(n) - s2.charAt(n) ;
            }
        });
            
        return strings;
    }
}