💡 오늘의 학습 키워드
- 시뮬레이션
✅ 오늘 공부한 내용
- 오늘의 프로그래머스 문제! 달리기 경주
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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 함수로 정렬하는 법을 알게 되었다.
👩💻 내일은 무엇을 학습할 것인가?
- 내일은 항해 문제만 풀 것 같다..
- 짐도 마저 싸야 하고 방 청소도 해야 한다! 원티드 인턴쉽 합격을 해버려서 서울 상경을 해야하기 때문에 ☺
- 된다면 아마 책읽기?
'개인 공부 > TIL' 카테고리의 다른 글
[ TIL - PGS ] 99클럽 코테 스터디 28일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.19 |
---|---|
[ TIL - PGS ] 99클럽 코테 스터디 27일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.17 |
[ TIL - PGS ] 99클럽 코테 스터디 25일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.15 |
[ TIL - PGS ] 99클럽 코테 스터디 24일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.14 |
[ TIL - PGS ] 99클럽 코테 스터디 23일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.13 |