GreatAlgorithm-Study / AlgorithmStudy

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

[7주차_수요일] 문제 추천 시스템 Version 1 #83

Closed KodaHye closed 3 weeks ago

KodaHye commented 1 month ago
### 🤔 시간복잡도 고려사항

### 💡 풀이 아이디어
yeongleej commented 1 month ago

🤔 시간복잡도 고려사항

  1. 정렬 이용하기
    • 시간복잡도 : O(N log N)
    • 정렬은 매 recommend요청 시마다 sorting을 해야 함
    • 즉, O(M * P log P)가 되므로 시간초과!
  2. 우선순위 큐 이용하기
    • 시간복잡도 : O(log N)
    • 즉, O(M * log P)가 되므로 가능

💡 풀이 아이디어

처음에는 정렬로 리스트 하나만 생성해서 첫번째와 마지막을 이용하려 했지만,,, 시간초과가 발생했습니다...우선순위큐를 활용하는 방법을 더 공부해야겠어요,,,

KodaHye commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

시간복잡도를 고려하고, 안된다! 싶으면 다른 방법으로 접근하는 태도를 길러야될 것 같습니다!!

baexxbin commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

객체로 이뤄진 값을 하나의 필드값만으로 제어하는 연습을 더 해야하겠다! 다른 분들 코드보다 배로 느려서.. 한번 다른 분들 코드 탐구해보겠습니다!

Jewan1120 commented 4 weeks ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

  1. 우선순위 큐 2개 (오름차순, 내림차순) + 해시 셋(푼 문제 저장) → 실패...
    • 풀이했던 문제가 다시 들어올 수 있음을 체크 못함
    • 이전에 풀었던 문제 넘버가 새로운 난이도로 들어올 수 있음 -> Set으로 저장하면 해결 불가했음
  2. 트리 맵 + 해시 맵 → 성공!
    • 트리 맵을 이용해서 문제 넘버와 난이도를 정렬해서 저장
    • 해시 맵을 이용해서 문제의 넘버와 난이도를 저장해서 풀었는지 안 풀었는 지를 확인
    • recommend: 조건에 맞게 문제를 출력
    • add: 각 맵에 문제 입력
    • solved: 해시 맵에서 해당 문제의 난이도를 가져와서 트리맵에서 지워 줌

      객체 다루기 복잡하네요...

yeahdy commented 4 weeks ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

계속 시간초과가 났는데, 원인이 BufferedReader로 매개변수를 가공할 때 형변환이 많거나 문자열 가공(split)이 많이 발생해서 였네요.. BufferedReader보다 Scanner같이 형변환 없이 바로 매개변수를 사용하는게 더 효율적인걸 알았어요!

icegosimperson commented 4 weeks ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어