[PGS] 달리기 경주 - JAVA

최영환·2023년 7월 30일
0

Programmers

목록 보기
12/43

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

import java.util.*;

class Solution {
    public String[] solution(String[] players, String[] callings) {
        HashMap<String, Integer> map = new HashMap<>();

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

        for (String calling : callings) {
            int score = map.get(calling);

            String previousCalling = players[score-1];

            players[score-1] = calling;
            map.put(calling, score-1);

            players[score] = previousCalling;
            map.put(previousCalling, score);
        }
        return players;
    }
}

📄 해설

접근

  • 완전 탐색을 수행하면 시간 초과가 난다.
  • HashMap 을 사용하면 시간 초과가 나지 않으므로, 이를 통해 해결한다.

과정

  • 변동되는 선수들의 순위는 String 을 키로 갖고 Integer 를 값으로 갖는 HashMap 에 저장된다.
  • players 배열은 현재 달리고 있는 선수들을 순서대로 가지고 있으므로, 해당 배열 내의 문자열들을 반복문을 통해 map 에 추가한다.
  • callings 배열을 순회하면서 불린 선수의 앞 선수와 위치를 변경해준다.
profile
조금 느릴게요~

0개의 댓글