728x90
반응형
프로그래머스
달리기 경주
https://school.programmers.co.kr/learn/courses/30/lessons/178871
- 오늘의 학습 키워드
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으로 한 번 더 도전해서 성공!!!!!!!!
- 1차 시도 - 한 칸씩 전진한다고 생각해서 배열 swap을 생각했는데 시간 초과가 떴다. ㅠ
99클럽 1기를 수강하면서 작성한 글입니다.
728x90
반응형
'Blog > Education' 카테고리의 다른 글
99클럽 코테 스터디 6일차 TIL + Stack (0) | 2024.03.30 |
---|---|
99클럽 코테 스터디 5일차 TIL + Stack (0) | 2024.03.29 |
99클럽 코테 스터디 4일차 TIL + 패턴 분석 (0) | 2024.03.28 |
99클럽 코테 스터디 3일차 TIL + 람다식 (0) | 2024.03.27 |
99클럽 코테 스터디 1일차 TIL + Map, getOrDefault 메서드 (0) | 2024.03.25 |
댓글