-
프로그래머스 - 문자열 내 마음대로 정렬하기알고리즘 2022. 6. 9.반응형
내 풀이
import java.util.Arrays; public class P_25 { public String[] solution(String[] strings, int n) { String[] answer = new String[strings.length]; for(int i=0; i<strings.length; i++) { answer[i] = String.valueOf(strings[i].charAt(n)) + strings[i]; } Arrays.sort(answer); for(int i = 0; i<strings.length; i++) { answer[i] = answer[i].substring(1, answer[i].length()); } return answer; } public static void main(String[] args) { // 문자열 내 마음대로 정렬하기 P_25 p = new P_25(); String [] x = {"abce", "abcd", "cdx"}; int n = 2; System.out.println(Arrays.toString(p.solution(x, n))); } }
n에 해당하는 인덱스 값을 먼저 뽑아서 각 원소 맨 앞에 붙인 다음에
sort() 메소드를 통해서 정렬을 하고 난 후, 앞에 붙였던 n에 해당 하는 원소들을 제거 하였다.
다른 사람 풀이
import java.util.*; class Solution { public String[] solution(String[] strings, int n) { String[] answer = {}; ArrayList<String> arr = new ArrayList<>(); for (int i = 0; i < strings.length; i++) { arr.add("" + strings[i].charAt(n) + strings[i]); } Collections.sort(arr); answer = new String[arr.size()]; for (int i = 0; i < arr.size(); i++) { answer[i] = arr.get(i).substring(1, arr.get(i).length()); } return answer; } }
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 1; else if(s1.charAt(n) == s2.charAt(n)) return s1.compareTo(s2); else if(s1.charAt(n) < s2.charAt(n)) return -1; else return 0; } }); return strings; } }
compareTo 재정의 한 모습 (정렬 기준 오버라이딩)
정렬 조건을 원하는대로 재정의함.
기존 String타입의 compareTo는 사전순으로 정렬이 기본이다.
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 두 정수 사이의 합 (0) 2022.06.11 프로그래머스 - 문자열 내 p와 y의 개수 (0) 2022.06.09 프로그래머스 - 문자열 내림차순으로 배치하기 (0) 2022.06.08 프로그래머스 - 문자열 다루기 기본 (0) 2022.06.06 프로그래머스 - 소수 찾기 (0) 2022.06.05