헝D의 일기장

https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의풀이

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%

profile

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!