[PROG] 12915 문자열 내마음대로 정렬하기

호호빵·2022년 11월 2일
0

Algorithm

목록 보기
41/46

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12915

나의 풀이

- 단어와 index 값의 문자를  Map으로 저장한다.
- key 정렬을 한 후 value 정렬을 하여 구한다. 
class Zoo {
    public String[] solution(String[] strings, int n) {
        String[] answer = new String[strings.length];
        Map<String, String> map = new HashMap<>();

        for (int i=0; i < strings.length; i++) {
            map.put(strings[i], String.valueOf(strings[i].charAt(n)));
        }

        List<Map.Entry<String, String>> entryList = new LinkedList<>(map.entrySet());
        entryList.sort(Map.Entry.comparingByKey());
        entryList.sort(Map.Entry.comparingByValue());

        for (int i=0; i<entryList.size(); i++) {
            answer[i] = entryList.get(i).getKey();
        }

        return answer;
    }
 }

비슷하지만 간결한 풀이

class Solution {
   public String[] solution(String[] strings, int n) {
       Arrays.sort(strings);
       Arrays.sort(strings, Comparator.comparing((s) -> s.substring(n, n + 1)));
       return strings;
   }
}

다른 발상을 가진 풀이

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

  • 시간은 보다 오래걸린다.
profile
하루에 한 개념씩

1개의 댓글

comment-user-thumbnail
2022년 11월 5일

java가 복잡해 보여도 확실히 타입들을 지정해 줘서 오류 날 일이 덜하겠네여

답글 달기