GreatAlgorithm-Study / AlgorithmStudy

🌟알고리즘 대장정🌟
6 stars 4 forks source link

[5주차_화요일] 전자사전 만들기 #57

Closed yeongleej closed 1 month ago

yeongleej commented 1 month ago
yeongleej commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

KodaHye commented 1 month ago

🤔 시간복잡도 고려사항


💡 풀이 아이디어

  1. Node[] arr를 입력 후 정렬
  2. T 개수만큼 반복
    • 입력된 str에 대해 lowerIdxuppderIdx찾기
      int diff = (uppderIdx - lowerIdx) - 1;
      if(diff < a - 1) -1;
      else arr[lowerIdx + (a - 1)].idx + 1

upperIdx는 구할 필요가 없었네요 !! ㅎㅎ

icegosimperson commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

baexxbin commented 1 month ago

🤔 시간복잡도 고려사항


💡 풀이 아이디어

처음에 트라이 문제인줄 알고,,, 공부하면서 풀었는데 실패했습니다🥹 이분탐색 문제였네요ㅠㅠ

  • 트라이로 풀 경우 메모리 초과
  • 최대단어개수 (N)100,000 * (T) 1000 *a 만큼의 공간을 가지고 있어야하는데 너무 큼
  • 조건으로 알파벳이 소문자만 주어지는지 등도 알 수 없음

문제를 똑바로 읽고! 어떤 알고리즘 유형을 사용해야할지 더더 생각하고 문제 풀어야겠습니다!!!!

Jewan1120 commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

yeahdy commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

  1. 사전에서 T 의 특정문자 startWith()compareTo() 에 따라 이분탐색(start,end)
  2. k번째 해당하는 단어 찾기
  3. 원본 사전에서 특정단어 찾기

시간 제한: 1000ms 초과한거 같은데..? 왜 통과된걸까요? image 다른분들 코드보고 리팩토링을 해봐야겠어요ㅜㅜ 코드리뷰 환영해요🤩

수빈님 코드 참고해서 리팩토링 했더니 798ms 로 줄였어요!