코디잉

프로그래머스 - 달리기 경주 (JAVA) 본문

자료구조&알고리즘/프로그래머스

프로그래머스 - 달리기 경주 (JAVA)

yong_ღ'ᴗ'ღ 2023. 9. 15. 17:35

https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

프로그래머스

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

programmers.co.kr

 

접근 방식) HashMap 사용

1. 순위대로 저장된 players 배열의 선수들의 이름을 HashMap<선수이름, 순위>로 넣어준다.

2. 호명된 선수가 저장된 callings 배열을 반복하며, 이전선수의 이름을 알아낸다.

    호명된 선수와 그 이전 선수를 사용해서

    2-1) players 배열의 순서를 변경해주고

    2-2) map의 rank를 갱신해준다.

 

import java.util.*;
class Solution {
    public String[] solution(String[] players, String[] callings) {   
        // 선수이름, 현재순위(0부터 시작)
        HashMap<String, Integer> map = new HashMap<>();
        for (int i = 0; i < players.length; i++){
            map.put(players[i], i);
        }
        
        for (String player : callings) {
            int rank = map.get(player);
            String prevPlayer = players[rank - 1];
            
            // players 배열 갱신
            players[rank - 1] = player;
            players[rank] = prevPlayer;
            
            // map 갱신
            map.put(player, rank - 1);
            map.put(prevPlayer, rank);
        }

        return players;
    }
}
Comments