본문 바로가기
Blog/Education

99클럽 코테 스터디 2일차 TIL + Map put/get swap

by 코젼 2024. 3. 26.
728x90
반응형

프로그래머스

달리기 경주

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

 

프로그래머스

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

programmers.co.kr


  • 오늘의 학습 키워드
    Map put/get swap
  • 공부한 내용 본인의 언어로 정리하기
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    class Solution {
        public String[] solution(String[] players, String[] callings) {
        Map<String, Integer> player = new HashMap<>();
        Map<Integer, String> rank = new HashMap<>();
        String[] answer = new String[players.length];
    
        // 초기화
        for (int i=0; i<players.length; i++) {
          player.put(players[i], i+1);
          rank.put(i+1, players[i]);
        }
    
        // 추월 logic
        for (int i=0; i<callings.length; i++) {
          int p_value = player.get(callings[i]); // 추월한 사람의 value
          String p = rank.get(p_value); // 추월한 사람
          String front_p = rank.get(p_value - 1); // 추월당한 앞 사람
    
          // swap 등수 변경
          // 추월 한 사람
          player.put(p, player.get(front_p));
          rank.put(p_value - 1, p);
          // 추월 당한 사람
          player.put(front_p, player.get(p) + 1);
          rank.put(p_value, front_p);
        }
    
        for (int i=0; i<rank.size(); i++) answer[i] = rank.get(i+1);
        return answer;
        }
    }​
  • 오늘의 회고
    • 1차 시도 - 한 칸씩 전진한다고 생각해서 배열 swap을 생각했는데 시간 초과가 떴다. ㅠ
      배열 최악의 경우 O(n^2) 이 되기 때문에 테스트 통과에 실패했다.
      import java.util.Arrays;
      
      class Solution {
          public String[] solution(String[] players, String[] callings) {
          for (int i=0; i<callings.length; i++) {
            int index = Arrays.asList(players).indexOf(callings[i]);
            String tmp = players[index];
            players[index] = players[index-1];
            players[index-1] = tmp;
          }
          return players;
          }
      }​​
    • 2차 시도 - Map으로 풀어봤는데 더 이상해짐 ㅠ_ㅠ 정확성 18.8
      rank 관련된 Map 하나만 만들어서 key/value 값에 접근하려니까 어려웠음...
    • 3차 시도 - 추가적으로 key/value를 관리할 수 있는 player Map을 구현함!
      Map으로 한 번 더 도전해서 성공!!!!!!!!

99클럽 1기를 수강하면서 작성한 글입니다.

https://99club.oopy.io/

 

99클럽-1기 모집 중

현직 개발자와 함께하는 코테 스터디

99club.oopy.io

 

728x90
반응형

댓글