본문 바로가기
Beakjoon&프로그래머스/Java

[프로그래머스/Java] 달리기 경주

by 현장 2026. 3. 17.

-Code

import java.util.*;

class Solution {
    public String[] solution(String[] players, String[] callings) {
        // 인덱스를 빨리 찾기 위한 map
        Map<String, Integer> playerAndIdx = new HashMap<>();
        for (int i = 0; i < players.length; i++) {
            playerAndIdx.put(players[i], i);
        }
        // name에 따른 추월 계산 및 동기화
        for (String name : callings) {
            // 추월한 이름의 idx
            int currIdx = playerAndIdx.get(name);
            // 추월 당할 사람의 이름
            String temp = players[currIdx - 1];
            // 동기화
            players[currIdx - 1] = name;
            players[currIdx] = temp;
            playerAndIdx.put(temp, currIdx);
            playerAndIdx.put(name, currIdx - 1);
        }
        return players;
    }
}