Algorithm/프로그래머스

[Lv. 1] 달리기 경주

녱녱 2023. 8. 8.

class Solution {
    public String[] solution(String[] players, String[] callings) {
        String[] answer = new String[players.length];

        HashMap<String, Integer> Player = new HashMap<>();
        HashMap<Integer, String> Rank = new HashMap<>();

        for (int i = 0; i < players.length; i++) {
            Player.put(players[i], i);
            Rank.put(i, players[i]);
        }

        for (String calling : callings) {

            int currentRank = Player.get(calling);
            String player = Rank.get(currentRank);

            String frontPlayer = Rank.get(currentRank - 1);

            Player.put(player, currentRank - 1);
            Player.put(frontPlayer, currentRank);

            Rank.put(currentRank - 1, player);
            Rank.put(currentRank, frontPlayer);
        }

        for (int i = 0; i < players.length; i++) {
            answer[i] = Rank.get(i);
        }

        return answer;
    }

}

1. map을 두 개 선언해 하나는 플레이어 기준, 하나는 순위 기준으로 초기화 한다

2. 추월한 유저의 순위와 추월한 유저의 이름, 바로 앞 플레이어를 초기화한다

3. 이름 불린 선수와 그 전에 있던 선수의 위치를 바꿔준다

4. map으로 저장된 결과를 배열로 바꾸어 준다 -> 스트림보다 for문 돌리는게 빠른걸 지난주에 확인해서 for문으로 해결했다

'Algorithm > 프로그래머스' 카테고리의 다른 글

[Lv. 1] 신규 아이디 추천  (0) 2023.08.20
[Lv. 2] 카펫  (0) 2023.08.08
[Lv. 1] 체육복  (0) 2023.08.08
[Lv. 2] 영어 끝말잇기  (0) 2023.07.30
[Lv. 1] 개인정보 수집 유효기간  (0) 2023.07.30

댓글