Algorithm/Study

[99클럽 코테 스터디] 📝 Day5. 꾸준하게

ioh'sDeveloper 2024. 5. 26. 21:54
99클럽 코테 스터디 5일차 TIL + 힙(Heap)

 

📍오늘의 학습 키워드

Heap

 

📝 공부한 내용 본인의 언어로 정리하기

 

📖  오늘의 회고

오늘은 디스크 컨트롤러 문제를 해결하는 과정에서 자료구조인 힙(Heap)을 활용하는 방법에 대해 공부했습니다. 문제를 해결하기 위해 우선순위 큐를 사용하여 작업의 소요 시간을 기준으로 작업을 처리하려 했습니다. 또한, Arrays.sortComparator를 이용한 정렬 방법에 대해서도 고민해 보았습니다.

📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지


🤔 어떻게 해결했는지

🔖 문제 해결 링크 (https://develop-tracking.tistory.com/53)

  1. 작업을 요청 시간 순서로 정렬하기 위해 Arrays.sort(jobs, (a, b) -> a[0] - b[0])를 사용했습니다.
  2. 작업의 소요 시간을 기준으로 우선순위를 정하는 PriorityQueue<int[]> pq = new PriorityQueue<>(Comparator.comparingInt(a -> a[1]))를 사용했습니다.
  3. 현재 시간과 요청된 작업의 대기 시간을 관리하여 평균 대기 시간을 계산했습니다.

🤓 무엇을 새롭게 알았는지

  • PriorityQueue와 Comparator를 사용하는 방법을 배웠습니다.
  • Arrays.sort를 이용하여 2차원 배열을 특정 기준으로 정렬하는 방법을 익혔습니다.
  • 디스크 컨트롤러 문제에서 우선순위 큐를 활용하면 효율적으로 작업을 처리할 수 있다는 것을 깨달았습니다.

 내일 학습할 것은 무엇인지

  • 다양한 알고리즘 문제를 풀어보면서 PriorityQueue와 같은 자료구조의 활용도를 높이기
  • 자바의 다른 정렬 방법과 그 성능 차이에 대해 더 깊이 공부하기
  • 자바에서의 병렬 처리와 비동기 처리에 대해 학습하여 디스크 컨트롤러와 같은 문제를 더 효율적으로 해결하는 방법 탐구하기