문제
https://school.programmers.co.kr/learn/courses/30/lessons/178871
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 개요
얀의 달리기 경주에서 선수들이 추월하는 상황을 바탕으로 경주 종료 후 최종 순위를 구하는 문제입니다. 선수들이 초기 순위대로 주어지고, 해설진이 특정 선수를 호출하면 해당 선수가 바로 앞의 선수를 추월합니다. 이를 반복한 뒤, 최종적으로 모든 선수의 순위를 반환해야 합니다.
접근 방법
HashMap을 활용하여 간단하게 해결할 수 있는 문제입니다.
코드
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = new String[players.length];
Map<String, Integer> man = new HashMap<>();
Map<Integer, String> rank = new HashMap<>();
int cnt = 1;
for(int i=0; i<players.length; i++) {
man.put(players[i], cnt);
rank.put(cnt, players[i]);
cnt++;
}
for(int i=0; i<callings.length; i++) {
String cur = callings[i];
int curRank = man.get(cur);
String target = rank.get(curRank-1);
int targetRank = curRank-1;
man.put(cur, targetRank);
man.put(target, curRank);
rank.put(targetRank, cur);
rank.put(curRank, target);
}
for(int i=1; i<=cnt-1; i++) {
answer[i-1] = rank.get(i);
}
return answer;
}
}
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [PCCP 기출문제] 1번 / 동영상 재생기도움말 - Java (0) | 2024.11.26 |
---|---|
[프로그래머스] 문자열 나누기 - Java (0) | 2024.11.24 |
[프로그래머스] 멀쩡한 사각형 - Java (0) | 2024.11.23 |
[프로그래머스] 가장 큰 정사각형 찾기 - Java (0) | 2024.11.22 |
[프로그래머스] 리코쳇 로봇 - Java (0) | 2024.11.22 |