티스토리 뷰

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/17686

 

코딩테스트 연습 - [3차] 파일명 정렬

파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램��

programmers.co.kr

 

2. 설명

설명에 나온대로 정렬해서 품.

head랑 number을 나눠서 비교하고 tail은 필요없어서 따로 계산하지 않았다.

 

3. 코드

import java.util.*;
class Solution {
    public String[] solution(String[] files) {
        Arrays.sort(files, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                String head1 = s1.split("[0-9]")[0];
                String head2 = s2.split("[0-9]")[0];
                int compareHead = head1.toUpperCase().compareTo(head2.toUpperCase());
                if(compareHead == 0) { // head가 같을 때 number 비교
                    s1 = s1.substring(head1.length());
                    s2 = s2.substring(head2.length());
                    String number1 = "";
                    for(char c : s1.toCharArray()) { // number
                        if(Character.isDigit(c) && number1.length()<=5)
                            number1 += c;
                        else
                            break;
                    }
                    String number2 = "";
                    for(char c : s2.toCharArray()) {
                        if(Character.isDigit(c) && number2.length()<=5)
                            number2 += c;
                        else
                            break;
                    }
                    return Integer.parseInt(number1) - Integer.parseInt(number2);
                } else {
                    return compareHead;
                }
            }
        });
        return files;
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday