Algorithm/Java

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

례진 2023. 10. 25. 22:18

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

프로그래머스

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

programmers.co.kr

import java.util.*;

class Solution {
    public String[] solution(String[] players, String[] callings) {
               Map<String, Integer> rankMap = new HashMap<>();
        for(int i=0; i< players.length; i++){
            rankMap.put(players[i], i);
        }

        for (String player : callings) {
            int ownRank = rankMap.get(player);
            String beforePlayer = players[ownRank-1];

            players[ownRank-1] = player;
            players[ownRank] = beforePlayer;

            rankMap.put(player, ownRank-1);
            rankMap.put(beforePlayer, ownRank);
        }

        return players;
    }
}

해설

배열 내 위치를 저장할 수 있는 MAP을 생성하여, 호명될때마다 플레이어와 순위를 같이 변경해주면 된다.