Hayden's Archive

[알고리즘] 프로그래머스 : 문자열 내 마음대로 정렬하기 본문

Algorithm

[알고리즘] 프로그래머스 : 문자열 내 마음대로 정렬하기

_hayden 2021. 2. 18. 00:24

알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/12915

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1

programmers.co.kr

 

내가 작성한 코드

public class Solution {
	public String[] solution(String[] strings, int n) {
        for(int i=0; i<strings.length-1; i++) {
        	for(int j=i+1; j<strings.length; j++) {
        		String frontWord = strings[i];
        		String backWord = strings[j];
        		int frontAscii = frontWord.charAt(n);
        		int backAscii = backWord.charAt(n);
        		if(frontAscii > backAscii) {
        			String temp = strings[i];
        			strings[i] = strings[j];
        			strings[j] = temp;
        		}else if(frontAscii == backAscii) {
        			switch(isFaster(frontWord, backWord)) {
        				case "back" :
        					String temp = strings[i];
                			strings[i] = strings[j];
                			strings[j] = temp;
        					break;
        				default :
        					break;
        			}
        		}
        	}
        }
        return strings;
    }
	
	public String isFaster(String frontWord, String backWord) {
		int length = Math.min(frontWord.length(), backWord.length());
		for(int i=0; i<length; i++) {
			int frontAscii = frontWord.charAt(i);
			int backAscii = backWord.charAt(i);
			if(frontAscii < backAscii) return "front";
			if(frontAscii > backAscii) return "back";
		}
		return "same";
	}
}

 

 

보고 충격받은 다른 사람의 풀이...

이렇게 간단하게 풀 수도 있구나.. 허탈 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

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;
    }
}