풀이 유형 - 해시
해시맵으로 풀어야지 생각은 했는데
자꾸 틀려서 가만보니 원래 배열도 등수에 맞게 변경해줘야되는데
원본 players배열을 계속 불러와서 적용하니 틀리는게 당연 멍총멍총.. ㅋㅋ
- 해시맵 <선수이름, 등수> 담기
- callings 배열을 돌면서 불린 선수를 키로 잡은 등수 가져오기
- 불린 선수는 -1, 원래 등수에 있던 선수는 불린 선수의 등수로 변경
- players도 swap해서 바뀐 등수로 배열 만들어주기
- 마지막에 answer 배열에 담아서 리턴하거나 players 배열 고대로 리턴;
import java.util.HashMap;
class Solution {
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 + 1);
}
for (int i = 0; i < callings.length; i++) {
int grade = map.get(callings[i]);
map.put(callings[i], grade - 1);
map.put(players[grade - 2], grade);
String tmp = players[grade - 1];
players[grade - 1] = players[grade - 2];
players[grade - 2] = tmp;
}
for (int i = 0; i < players.length; i++) {
answer[i] = players[i];
}
return answer;
}
}
'CODING TEST' 카테고리의 다른 글
프로그래머스 - 대충 만든 자판 (0) | 2023.08.10 |
---|---|
프로그래머스 - 다항식 더하기 (0) | 2023.08.01 |
프로그래머스 고득점 Kit - 스택/큐 프로세스 (0) | 2023.07.22 |
기초수학 - 집합(Set)과 관련 코딩테스트 문제들 (0) | 2023.05.31 |
백준 1890번 - 동전 0 (0) | 2023.05.30 |