달리기 경주

magicdrill·2025년 1월 30일
1

달리기 경주

맵을 저장하는 과정까지는 맞았는데, 순서를 바꾸기 위해 탐색을 하는 과정을 너무 비효율적이게 작성했었다. 인덱스 값에 집중한다.

import java.util.Map;
import java.util.HashMap;

class Solution {
    public String[] solution(String[] players, String[] callings) {
        String[] answer = {};
        int N = players.length, M = callings.length, i, currentIndex;
        String calledPlayer, previousPlayer;
        Map <String, Integer> name = new HashMap<>();
        answer = new String[N];
        
        //맵에 선수 정보 저장
        for(i = 0; i < N; i++){
            name.put(players[i], i);
        }
        
        for(i = 0; i < M; i++){
            calledPlayer = callings[i];
            currentIndex = name.get(calledPlayer);
            
            //스왑 과정
            previousPlayer = players[currentIndex - 1];
            players[currentIndex - 1] = calledPlayer;
            players[currentIndex ] = previousPlayer;
            
            name.put(calledPlayer, currentIndex - 1);
            name.put(previousPlayer, currentIndex);
            
            for(String player : players){
                System.out.print(player + " ");
            }
            System.out.println();
        }
        
        for(i = 0; i < N; i++){
            answer[i] = players[i];
        }
        
        return answer;
    }
}

0개의 댓글