문제: https://school.programmers.co.kr/learn/courses/30/lessons/178871
1. 코드
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
Map <String, Integer> player = new HashMap<>();
for(int i = 0; i < players.length; i++)
player.put(players[i], i);
for(String c : callings) {
int callRank = player.get(c);
String temp = players[callRank];
players[callRank] = players[callRank - 1];
players[callRank - 1] = temp;
player.put(c, callRank - 1);
player.put(players[callRank], callRank);
}
return players;
}
}
2. 설명
Map <String, Integer> player = new HashMap<>();
for(int i = 0; i < players.length; i++)
player.put(players[i], i);
HashMap에 player의 정보와 등수 정보를 put해줍니다.
for(String c : callings) {
int callRank = player.get(c);
String temp = players[callRank];
players[callRank] = players[callRank - 1];
players[callRank - 1] = temp;
player.put(c, callRank - 1);
player.put(players[callRank], callRank);
}
해설진들이 추월한 선수의 추월 전 등수를 HashMap을 이용하여 callRank에 저장합니다. players의 등수에 맞게 교환합니다. 그리고 변경된 선수들의 순위를 HashMap인 player에도 변경해줍니다.
3. 정리
- 인덱스 탐색으로 인한 시간 초과는 HashMap 이용하면 쉽게 해결이 가능하다.
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'컴퓨터 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 92334번: 신고 결과 받기 [Java] (0) | 2023.08.20 |
---|---|
프로그래머스 - 172928번: 공원 산책 [Java] (0) | 2023.08.19 |
프로그래머스 - 150370번: 개인정보 수집 유효 기간 [Java] (0) | 2023.08.17 |
프로그래머스 - 161990번: 바탕화면 정리 [Java] (0) | 2023.08.16 |
프로그래머스 - 118666번: 성격 유형 검사하기 [Java] (0) | 2023.08.15 |