Hayden's Archive
[알고리즘] 프로그래머스 : 문자열 내 마음대로 정렬하기 본문
알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/12915
내가 작성한 코드
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;
}
}