코딩 공부

[프로그래머스] 달리기 경주 (Java - Lv.1)

ZZJJing 2023. 8. 21. 17:09

프로그래머스 

코딩테스트 달리기 경주 java Lv.1 

 

 

문제) 

출처 : 프로그래머스

 

버블정렬로 

players for문 안에 callings for문 돌리고 

같은거 있으면 

배열 앞에 있는거랑 불린거랑 자리 바꾸는걸로 했더니 

테스트 중간 몇개에서 계속 시간 초과가 났다. 

 

문의 하기들어가보니 

Map을 사용하라는 힌트가 있었다. 

 

처음엔 Map에 담아서 배열로 다시 만들어보라는 줄 착각해서 

뻘짓을 감행 ..

 

실패작2) 

class Solution {
    public Object[] solution(String[] players, String[] callings) {
        Map<Integer, String> imsi = new HashMap<Integer, String>();
        
        for(int i=0; i<players.length; i++){
            imsi.put(i, players[i]);
        }
        
        for(int i=0; i<callings.length; i++){
            for( int key : imsi.keySet()){
                if(imsi.get(key).equals(callings[i])){
                    imsi.put(key, imsi.get(key -1));
                    imsi.put(key-1, callings[i]);
                }
            }
        }
        
        Object[] answer = imsi.values().toArray();
        return answer;
    }
}

 

난 아직 스트림을 모르니깐 받은 playesr 배열을 하나씩 Map에 담았고, 

여튼 값을 바꿔서 Map에 넣고 했는데 이것도 역시 시간초과가 몇개 더 나오게 되버렸다. 

 

다시 여기 저기서 힌트를 얻어서 

기존 배열에 값은 수정하고, 

맵에 이름(키)마다 갖고 있는 values 값을 수정해주니 통과되었다 ㅠㅠ 

 

 

완료)