[코테] 프로그래머스 - 달리기 경주

래림·2023년 4월 19일
0



아 처음이 일케 풀었는데 시간초과남

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)












O(n2)라 그런듯 어떻게 더 줄일 수 있을까?

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;

        }



}

tmi

최근에 한 기업 코테봤는데 언어가 자바만 되더라..
파이썬으로만 연습했었는데 안드가 자바,코틀린 기반이기도 하고 기업코테에선 자바가 없는경우를 못본거같아서 이젠 찐찐찐최종 자바로 공부해야겠다..

오늘 배운거

hashmap IntStream forEach

0개의 댓글