TIL(Today Ingwang Learned)

2023-01-11(실전 프로젝트)

김코식 2023. 1. 12. 01:14


코딩 테스트 스터디 시작

어제 회의를 통해 코딩테스트 스터디를 어떤 방식으로 진행하면 좋을지에 대해 얘기를 나는 뒤 방향성을 정했다.

저번 스터디인 객체지향 스터디의 스터디원들과 또 같이 스터디를 하는 것이 몹시 좋았다.

저번 스터디를 통해 객체지향에 대해 조금이지만 이해를 하고 알게 되었듯이 이번의 코딩테스트 스터디를 통해 코딩테스트도 다시한번 감을 잡고 나중에 코딩테스트에 꼭 도움이 됐으면 좋겠다.

https://www.notion.so/85ab2a0edea84e0bb0f725a14b36b71e

 

코딩테스트 스터디

코딩 테스트를 대비하여 문제를 풀어보고 코드리뷰를 하는 모임

www.notion.so


Spring

코드를 짜면서 인기 게시글을 출력해야 되는 상황에서 처음 기획에선 좋아요 개수에 따른 인기 게시글을 생각했지만 그렇게 되면 좋아요가 비정상적으로 많은 게시글은 인기 게시글에서 내려가지 않는 상황이 생길 것이라는 팀원의 의견을 들었다.일리가 있는 말이라고 생각을 했고 해결방안을 생각해 보니 좋아요 개수에 기준을 정하고 그 기준점이 넘은 게시글을 인기 게시글로 올리자는 쪽으로 이야기가 됐다. 

 

 

생각 해본 점


인기 게시글로 올리는 방법

좋아요 개수가 기준점을 넘은 게시글들의 게시글 생성 시간순으로 인기 게시글로 올리자

> 오래전에 작성한 게시글이 나중에 좋아요가 늘어나 인기 게시글이 된 경우에 인기 게시글에 올라 갈 수 없다.

> 좋아요가 기준점을 넘은 시점을 기준으로 인기 게시글에 올리자

 

인기 게시글 중 최신 인기 게시글 5개만 출력하는 방법

좋아요가 기준점을 넘은 게시글들을 리스트에 담아 인기게시글이 된 시점을 기준으로 내림차순 정렬을 하여 5개만 출력


구현한 방법

1. 게시글 테이블에 인기 게시글이 된 시간을 저장하는 column 생성

2. 좋아요 버튼을 클릭했을 시에 좋아요의  개수를 판단한 뒤 기준점이 넘으면 게시글 테이블의 컬럼에 LocalDateTime으        로  인기 게시글이 된 시간 찍어주기

3. HashMap을 사용하여 게시글 id와 인기게시글이 된 시간을 key value값으로 넣어 리스트 생성

4. Entry 로 리스트를 감싼뒤 Collections를 사용하여 리스트를 value값으로 리스트를 내림차순 정렬

5. 정렬된 리스트를 1~5번째 까지 출력 > 리스트의 크기가 5보다 작은 경우 1~ 리스트의 크기 만큼만 출력


자세한 코드는 github에 있습니다!

https://github.com/PULBATTE/PULBATTE_BE/blob/dev/src/main/java/com/pulbatte/pulbatte/post/service/PostService.java

 

GitHub - PULBATTE/PULBATTE_BE: 풀밭에_백

풀밭에_백. Contribute to PULBATTE/PULBATTE_BE development by creating an account on GitHub.

github.com