본문 바로가기
개인 공부/TIL

[ TIL - PGS ] 99클럽 코테 스터디 26일차 TIL + 오늘의 학습 가이드

by 킴도비 2024. 8. 16.

💡 오늘의 학습 키워드

  • 시뮬레이션

 

✅ 오늘 공부한 내용

  • 오늘의 프로그래머스 문제! 달리기 경주
 

프로그래머스

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

programmers.co.kr

 

 

👀 오늘의 회고

🔥 어떤 시도를 했는가?

  • 오늘은 초반엔 deque로 풀까 고민하다가 그냥 인덱스 값을 교환한 후 해당 배열에 따라 배치하면 되겠다 생각하여 문제를 풀었다!
import java.util.*;

class Solution {
    public String[] solution(String[] players, String[] callings) {
        // 달리기 경주
        // 앞 선수를 추월할 때 추월한 선수 이름을 부른다.
        HashMap<String, Integer> hsm = new HashMap<>();
        
        for(int i = 0; i < players.length; i++){
            hsm.put(players[i], i);
        }
        
        // 해당 키 값이 있다면 value -1
        // 그 앞 인덱스 값 + 1
        for(int j = 0; j < callings.length; j++){
            // 부른 값
            String calling = callings[j];
            
            // 부른 값 인덱스와 이전 인덱스
            int current = hsm.get(calling);
            int prev = current - 1;
            
            // 이전 인덱스 이름 저장
            // 이전 인덱스에 부른 인덱스 값 저장
            // 현재 인덱스에 이전 인덱스 저장
            String prevP = players[prev];
            players[prev] = players[current];
            players[current] = prevP;
            
            // 부른 값에 이전 값 인덱스 저장
            // 이전 값에 현재 값 인덱스 저장
            hsm.put(calling, prev);
            hsm.put(prevP, current);
        }
        
        // answer 배열에 저장
       // HashMap을 값(인덱스) 기준으로 오름차순 정렬
        List<Map.Entry<String, Integer>> entryList = new ArrayList<>(hsm.entrySet());
        entryList.sort(Map.Entry.comparingByValue()); // 값 기준으로 오름차순 정렬

        // 정렬된 키(선수 이름)를 answer 배열에 저장
        String[] answer = new String[players.length];
        for (int i = 0; i < entryList.size(); i++) {
            answer[i] = entryList.get(i).getKey(); // 키(선수 이름)를 가져옴
        }
        return answer;
    }
}

 

👏 무엇을 새로 알았는가?

  • comparingByValue 함수로 정렬하는 법을 알게 되었다.

 

👩‍💻 내일은 무엇을 학습할 것인가?

  • 내일은 항해 문제만 풀 것 같다..
  • 짐도 마저 싸야 하고 방 청소도 해야 한다! 원티드 인턴쉽 합격을 해버려서 서울 상경을 해야하기 때문에 ☺
  • 된다면 아마 책읽기?