https://school.programmers.co.kr/learn/courses/30/lessons/178871
나의풀이
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = new String[players.length];
//key로 접근을 용이하게 하기 위해 map 2개 사용
Map<Integer,String> map = new HashMap<>();//등수, 선수
Map<String,Integer> map2 = new HashMap<>();//선수, 등수
for(int i=0;i<players.length;i++){
map.put(i+1,players[i]);
map2.put(players[i],i+1);
}
for(int i=0;i<callings.length;i++){
String caller = callings[i];
int idx =map2.get(caller); //불린선수 현재등수
String prev = map.get(idx-1); //그 앞에 있던 선수
map2.put(caller,idx-1);//불린선수는 앞으로
map2.put(prev,idx); // 앞에있던애는 뒤로
map.put(idx-1,caller);
map.put(idx,prev);
}
int idx=0;
for(int key:map.keySet()){
answer[idx++]=map.get(key);//1등부터 담김
}
return answer;
}
}
문제유형
해쉬.
시간초과 발생을 막기 위해 hashmap 사용.
정답율 40%
'코테풀이' 카테고리의 다른 글
[프로그래머스] 전화번호 목록 java 자바 (LEVEL2) (0) | 2023.04.30 |
---|---|
[프로그래머스] 의상 java 자바(LEVEL2) (0) | 2023.04.30 |
[프로그래머스] 바탕화면 정리 java 풀이(level1) (0) | 2023.04.20 |
[프로그래머스] 공원 산책 java 풀이 (level1) (0) | 2023.04.20 |
[백준] BOJ - 2644 촌수계산 java (실버2) (0) | 2023.04.12 |