알고리즘

[프로그래머스] 문자열 내 마음대로 정렬하기 (JAVA)

J 코딩 2023. 9. 14. 14:32
반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


※ JAVA 코드 (문자열 내 마음대로 정렬하기)

import java.io.*;
import java.util.*;
class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = new String[strings.length];
        Map<String, Character> map = new TreeMap<>();
        int idx = 0;
        
        for(int i = 0; i < strings.length; i++){
            // map에 문자열과 인덱스 n에 있는 문자를 담는다
            map.put(strings[i], strings[i].charAt(n));
        }

        // map을 value로 정렬 -> 같을경우  key의 사전순
        List<Map.Entry<String, Character>> entries = new LinkedList<>(map.entrySet());

        entries.sort(((o1, o2) -> map.get(o1.getKey()) - map.get(o2.getKey())));
        
        for(Map.Entry<String, Character> entry : entries){
            answer[idx++] = entry.getKey();
        }
        return answer;
    }
}

※ 생각정리

자료구조를 써서 푸는 문제는 왠만하면 정리를 하려고 한다.

1. TreeMap에 값을 담아 담을때부터 사전순으로 문자열을 정렬해둔다 (TreeMap에 담으면 키값이 자동으로 사전순 정렬됨)

2. value를 기준으로 정렬한다. (람다식을 사용했다.)

3. 정렬한 entries들을 뽑아서 answer 배열에 담는다.

 

- 새벽코딩 - 

반응형