Algorithm/Study

[99클럽 코테 스터디] 📝 Day7. 간단한 JAVA 솔루션이 100% 승리합니다!

ioh'sDeveloper 2024. 5. 26. 22:02
99클럽 코테 스터디 7일차 TIL + 정렬

 

📍오늘의 학습 키워드

  • 이중 우선순위 큐
  • 정렬 알고리즘
  • 우선순위 큐 사용법
  • 배열의 부분 합 계산

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

오늘은 이중 우선순위 큐와 정렬 알고리즘을 활용한 문제 풀이에 대해 공부했다. 주어진 배열에서 인접한 두 요소의 합을 계산하고, 이를 통해 최대 점수와 최소 점수를 계산하는 방법을 배웠다. 또한, 우선순위 큐를 사용하여 효율적으로 데이터를 관리하는 방법도 익혔다.

📖  오늘의 회고

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

문제: 주어진 배열을 k개의 가방으로 나누어 최댓값과 최솟값의 점수 차이를 구하는 문제에서, 중간에 올바른 값이 나오지 않는 문제를 발견했다. 

시도: 초기에는 우선순위 큐를 사용하여 최솟값과 최댓값을 관리했으나, 배열의 부분 합을 이용하는 방식으로 다시 접근했다.

사실 문제 풀이가 잘 안되어서 다른 솔루션을 참고했다. 생각보다 간소하게 푼 사람의 코드를 보고 다시 풀어보았다. 뭔가 문제 접근 방식이 잘못되었던..

🤔 어떻게 해결했는지

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

우선순위 큐 대신, 배열의 부분 합을 계산하여 이를 정렬한 뒤 가장 작은 값과 가장 큰 값을 선택하는 방식으로 해결했다. 이를 통해 각 가방의 점수를 계산하고 최종적으로 점수 차이를 구할 수 있었다.

🤓 무엇을 새롭게 알았는지

  • 우선순위 큐를 사용하여 최솟값과 최댓값을 효율적으로 관리할 수 있다는 점
  • 배열의 부분 합을 계산하고 이를 정렬하는 방법이 복잡한 문제를 단순화할 수 있다는 점
  • Arrays.sort를 사용하여 배열을 오름차순으로 정렬할 수 있다는 점

복잡성

  • 시간 복잡도: O(nlogn)
  • 공간 복잡도: O(n)

 내일 학습할 것은 무엇인지

  • 더 복잡한 정렬 알고리즘과 우선순위 큐의 응용
  • 다양한 데이터 구조와 알고리즘을 사용하여 복잡한 문제를 해결하는 방법
  • 효율적인 코드 작성 및 최적화 방법