반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/178871
입출력
이 문제는 역시 프로그래머스 1단계 문제로써 문제에 적힌 조건만 잘 이핸다면 어렵지 않게 문제를 해결할 수 있는 문제이다.
나는 Map 을 이용하여 해당 플레이어의 등수를 저장하였고, 추월 할때마다 추월당한 플레이어, 추월한 플레이어의 등수를 서로 바꿔주도록 코드를 짰는데 더 좋은 아이디어나 방법이 있으면 공유 부탁드린다. ^^
import java.util.*;
class Solution {
public static void main(String[] args) {
String[] players = {"mumu", "soe", "poe", "kai", "mine"};
String[] callings = {"kai", "kai", "mine", "mine"};
System.out.println(Arrays.toString(solution(players, callings)));
}
static public String[] solution(String[] players, String[] callings) {
String[] answer = new String[players.length];
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < players.length; i++){
map.put(players[i], i);
}
for (int i = 0; i < callings.length; i++){
// 추월 하는 Player = callings[i]
int calledPlayer = map.get(callings[i]); // 추월하는 Player 의 현재 등수
// 추월 당한 Player
String tempPlayer = players[calledPlayer - 1];
players[calledPlayer - 1] = callings[i];
players[calledPlayer] = tempPlayer;
map.put(players[calledPlayer],calledPlayer);
map.put(callings[i],calledPlayer - 1);
}
// 등수는 같을 수 없기에 Set을 이용하여 Key 추출
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
for (int i = 0; i < players.length; i++){
if (entry.getValue().equals(i)){
answer[i] = entry.getKey();
}
}
}
return answer;
}
}
느낀점
해당 문제 같은 경우는 딱히 어려운 부분은 없었고 Map 에서 해당 Value를 갖는 Key를 추출할때 어떻게 추출하는지 한번 다시 정리하면 좋을것 같다.
반응형
'코딩테스트(Java) > 프로그래머스 1단계' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 - JAVA (0) | 2024.02.28 |
---|---|
[프로그래머스] 개인정보 수집 유효기간 - JAVA (0) | 2024.02.27 |
[프로그래머스] 공원 산책 - JAVA (1) | 2024.02.27 |
[프로그래머스] 가장 많이 받은 선물 - JAVA (2) | 2024.02.27 |