Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] [3차] 파일명 정렬 - 17686 본문

프로그래머스

[level 2] [3차] 파일명 정렬 - 17686

csct3434 2024. 2. 28. 20:01

문제 링크

 

프로그래머스

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

programmers.co.kr

import java.util.Arrays;

class Solution {

    public String[] solution(String[] files) {
       Arrays.sort(files, (str1, str2) -> {
             String head1 = parseHead(str1.toLowerCase());
             String head2 = parseHead(str2.toLowerCase());
             if (head1.compareTo(head2) == 0) {
                Integer number1 = parseNumber(str1.substring(head1.length()));
                Integer number2 = parseNumber(str2.substring(head2.length()));
                return number1.compareTo(number2);
             }
             return head1.compareTo(head2);
          });
       return files;
    }

    private String parseHead(String str) {
       StringBuilder stringBuilder = new StringBuilder();
       for (char c : str.toCharArray()) {
          if (Character.isDigit(c)) {
             break;
          }
          stringBuilder.append(c);
       }
       return stringBuilder.toString();
    }

    private Integer parseNumber(String str) {
       StringBuilder stringBuilder = new StringBuilder();
       for (char c : str.toCharArray()) {
          if (!Character.isDigit(c) || stringBuilder.length() == 5) {
             break;
          }
          stringBuilder.append(c);
       }
       return Integer.valueOf(stringBuilder.toString());
    }
}