본문 바로가기
반응형
Algorithm

[프로그래머스 Java] 달리기 경주 Lv.1

by brightGarden02 2023. 9. 5.

* 순서

- 문제

- 문제 목표

- 문제 설명

- 문제 풀이

- 최종 코드

- 포인트

 

- 문제

 

 

- 문제 목표

최종 순위에 대한 선수 이름을 구하려고 한다.

 

 

- 문제 설명

불려지는 선수가 앞 선수를 추월한다.

추월되는 선수는 뒤로 밀려난다.

 

 

- 문제 풀이

1. map을 이용해서 선수에 대한 순위를 매긴다.

2. for문, map을 이용한다.

3. map을 통해 불려지는 선수 등수를 구한다.

4. 불려지는 선수 등수를 이용하여 이전 선수와 이름을 바꾼다.

5. map에서 불려진 선수의 순위를 갱신한다.

6. map에서 이전 선수의 순위를 갱신한다.

 

 

- 최종 코드

    public static String[] solution(String[] players, String[] callings) {

        Map<String, Integer> map = new HashMap<>();

        // 1. map을 이용해서 선수에 대한 순위를 매긴다.
        for(int i = 0; i < players.length; i++) {
            map.put(players[i], i);
        }

        // 2. for문, map을 이용한다.
        for(int i = 0; i < callings.length; i++) {
            String calledPlayer = callings[i];

            //3. map을 통해 불려지는 선수 등수를 구한다.
            Integer rank = map.get(calledPlayer);

            //4. 불려지는 선수 등수를 이용하여 이전 선수와 이름을 바꾼다.
            String beforePlayer = players[rank - 1];
            players[rank - 1] = players[rank];
            players[rank] = beforePlayer;

            //5. map에서 불려진 선수의 순위를 갱신한다.
            map.put(calledPlayer, rank - 1);

            //6.  map에서 이전 선수의 순위를 갱신한다.
            map.put(beforePlayer, rank);
        }

        return players;
    }

 

 

- 포인트

Map, 변수치환

댓글


반응형
반응형