요르딩딩

프로그래머스 : 파일명 정렬 (comparator , 정규식) 본문

[코딩테스트]/문제풀이

프로그래머스 : 파일명 정렬 (comparator , 정규식)

요르딩딩 2022. 4. 18. 17:22
728x90
반응형

이번문제는 검색해서 찾아보기 전까지는 해결방법을 적용하기가 어려웠다고 생각한다.

 

찾아보니 comparator와 정규식을 사용하면 보다 편하게 풀 수 잇었다는것을 배울 수 있었다.

 

이번기회에 comparator와 정규식을 익혀야겠다

import java.util.*;

class Solution {
	public String[] solution(String[] files) {
		String[] answer = {};
		
		compartor c = new compartor();
		Arrays.sort(files, c);

		return files;
	}
}

class compartor implements Comparator<String>{

	@Override
	public int compare(String o1, String o2) {
		
		String tmpHead1 = o1.split("[0-9]")[0];
		String tmpHead2 = o2.split("[0-9]")[0];
		
		int result = (tmpHead1.toLowerCase()).compareTo(tmpHead2.toLowerCase()); //모두 소문자로 통일 후 비교
		if(result == 0 ) { //Head가 같을 경우 숫자 비교하기
			o1 = o1.replaceAll(tmpHead1, ""); //숫자앞 문자 지우기
			o2 = o2.replaceAll(tmpHead2, "");
			
			o1 = o1.replaceAll(" ", "");
            o2 = o2.replaceAll(" ", "");
			
			String tmpNum1 = o1.split("[a-zA-Z.-]")[0];
			String tmpNum2 = o2.split("[a-zA-Z.-]")[0];
			
			result = Integer.parseInt(tmpNum1)- (Integer.parseInt(tmpNum2));
		}
		return result;
	}
728x90
반응형
Comments