아 처음이 일케 풀었는데 시간초과남
import java.util.*;
class Solution {
public ArrayList<String> solution(String[] players, String[] callings) {
ArrayList<String> answer= new ArrayList<>();
for (String calling :callings){
for(int i=0;i<players.length;i++){
if(players[i].equals(calling)){
String temp=players[i-1];
players[i-1]=calling;
players[i]=temp;
}
}
}
for (String p:players){
answer.add(p);
}
return answer;
}
}
테스트 1 〉 통과 (0.03ms, 76.1MB)
테스트 2 〉 통과 (0.03ms, 73.2MB)
테스트 3 〉 통과 (0.21ms, 79.7MB)
테스트 4 〉 통과 (4.56ms, 73.9MB)
테스트 5 〉 통과 (18.90ms, 81.3MB)
테스트 6 〉 통과 (60.19ms, 96.8MB)
테스트 7 〉 통과 (1367.51ms, 121MB)
테스트 8 〉 통과 (6017.43ms, 128MB)
테스트 9 〉 실패 (시간 초과)
테스트 10 〉 실패 (시간 초과)
테스트 11 〉 실패 (시간 초과)
테스트 12 〉 실패 (시간 초과)
테스트 13 〉 실패 (시간 초과)
테스트 14 〉 통과 (0.05ms, 78.8MB)
테스트 15 〉 통과 (0.02ms, 89MB)
테스트 16 〉 통과 (0.03ms, 71.4MB)
binarySearch를 사용하려했는데, binarySearch는 정렬된 배열에만 사용할 수 있어서
순서가 중요한 이 문제에는 알맞지 않은듯 하다.
모르겠어서 다른사람꺼 풀이 참고함..
다들 해시맵으로 풀었더라...(아련)
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
Map<String,Integer> playerInfo= new HashMap<String,Integer>();
//hashmap에 입력
for (int i=0;i<players.length;i++){
playerInfo.put(players[i],i);
}
for (String player:callings){
//호명된 player의 등수 저장
int index=playerInfo.get(player);
//앞사람 이름저장해둠
String frontPlayer=players[index-1];
//앞사람에 호명된 사람 이름 넣음
players[index-1]=player;
//호명된 사람 자리에 앞사람 이름넣음
players[index]=frontPlayer;
//map에 반영
playerInfo.put(player,index-1);
playerInfo.put(frontPlayer,index);
}
return players;
}
}
최근에 한 기업 코테봤는데 언어가 자바만 되더라..
파이썬으로만 연습했었는데 안드가 자바,코틀린 기반이기도 하고 기업코테에선 자바가 없는경우를 못본거같아서 이젠 찐찐찐최종 자바로 공부해야겠다..
hashmap IntStream forEach