log 2021-07-21
알고리즘 문제풀이
kakao 2021 blind - 매출 하락 최소화 (2)
결국 gg치고 답봄.
dp[node][picked]
로 접근하는 것은 맞았지만, 각 경우를 제대로 풀지 못함.
pseudo
통계 적용 절차에 대해 마저 생각해 보자. 기초 자료로부터 포인트와 클래스를 계산하는 과정이다.
그러면 기초 자료가 어떤것이 될 지, 포인트와 클래스 등 중간 계산 결과는 어떻게 될 지 알아야 한다.
현재 프로필 페이지에서 확인 가능한 정보:
- 한 줄 소개 (편집)
- 지역 (편집)
- 메일 주소 (편집)
- 요약 탭
- 현재 랭크 : 유저 포인트 기반
- 최대 랭크 : 유저 포인트 기반
- 전체 활성 유저수(of xxx) : 전체 통계 테이블
- 팔로우 대상 (스터디?)
- 타이틀
- 한줄설명
- 팔로워 수
- 활동 다이어그램 (Post,Vote,Comment,Study Group,Answer,Question)
- 활동 캘린더 (일자별 활동수)
- 포스트 탭
- 포스트 목록 & 페이지네이션
- 포스트: 일단 패스
- 포스트 목록 & 페이지네이션
랭크를 구하려면, 유저 포인트를 알아야 하고, 유저 포인트를 구하려면, 유저 활동들을 자세하게 알아야 한다. 유저 포인트는 어떻게 할 것인가. 위와 같은 활동 (글, 투표, 댓글, 스터디, 답변, 질문) 기반 포인트 계산 스터디에 대한 부분이 좀 문제다. 유저의 통계 정보를 요청할 때마다 유저가 참여하는 스터디들을 쿼리해야 하나? 그건 좀 비효율적일 듯하다. 따라서, 통계 업데이트시에만 그런 정보들을 싹다 한번에 긁어와서 정보 업데이트시키는 쪽으로.
그러면, 우선 기초 정보 활동에 따른 포인트 부여 점수들 가진 목록을 만들자. 그런데 한 편으론, 이런 액션에 따른 포인트 룰을 만들게 되면, 가변적이어야 하는 룰을 적용하지 못한다는 문제가 있는데, 일단 이 부분은 넘어가도록 하자.
근데 이 history를 어느 단에 넣어야 할 지 고민이다. db쪽에 넣어서 확실히 써 질때로 할지, 아니면 라우트 단에 넣어서 미들웨어 같은걸로 만들지. db단에 넣으면 종속이 많이 늘어나는 단점이 있고, 미들웨어 단에 넣는건 확질히 써진 시점으로 하기가 어렵다.
현재 서버 api 구현에도 로직이 다 포함되어 있지 않아서 아마 따로 다 구현해야할 듯하다. 예를 들어, 스터디(categories) 생성 요청에 대해, 로그인이 필요할 것이고, 라우터와 컨트롤러를 따로 두어야 하나?
어쨌든 대충 되었다고 한다면, history 테이블에 각 유저들의 활동 정보가 들어있을 것이다.
근데 지금 상황으론, db에 이런 종속을 만든다는 것 역시 좀 그렇다. 로직이 안되었으니 안되어있는 것은 빼고 일단 그냥 바로 가져올 수 있는 거로만 빨리 만드는 쪽이 더 나을듯도 하다.
Comments