728x90

Java 177

[TOY] 개발 - Adapters(User)

이전 진행 상황단위 테스트 개발UserPostUseruser의 adapters 패키지 개발입니다. Controller가 개발과 함께 Mapper 클래스와 Spring Security가 사용되며 로그인 기능 및 설정 클래스가 생성되었습니다. 변경 사항UserDTO.Response 수정 -> List 제거추가 사항UserMapper 클래스 추가Controller 추가 -> 렌더링을 위한 UserFormController, 로직 처리를 위한 UserControllerSpring Security 설정 클래스 추가 -> WebSecurityConfigsecurity 로그인을 위한 클래스 추가 -> LoginSuccessHandler, CutomUserDetails, CustomUserDetailsService ..

[TOY] 개발 - 단위 테스트(domain, service)

이전 진행 상황Service 개발(Comment, Photo)PostService 추천/비추천 로직 변경 -> 회원, 비회원(세션 단위) 24시간 이내 추천/비추천 제한추천/비추천 로직 변경으로 인한 기술 스택 추가 -> RedisUserPostCommentPhotoUseruser 도메인의 단위 테스트로 UserService의 로직을 검증하는 테스트가 추가되었습니다. 데이터베이스와 상호 작용 없이 순수 로직 테스트로 Mock 라이브러리가 사용되었고 login 메서드에 대한 테스트가 수행되었습니다.추가 사항UserServiceTest 추가class UserServiceTestUserService에 대한 단위 테스트입니다. 로그인 메서드가 각 케이스별로 테스트되었습니다.@Slf4j@ExtendWith(Moc..

[TOY] 개발 - Application(PostService)

이전 진행 상황usecase dto -> 순수 엔티티 변경수정용 UpdateDTO 추가modify 메서드 수정커스텀 예외 추가(Base, User)PostPostPostService 개발에 따라 수정된 사항들과 추가된 사항이 존재합니다.변경 사항usecase(crud, recommend) 메서드 추가 및 재배치PostRepository 메서드 추가 -> PostType을 통한 검색Post 엔티티 메서드 추가 -> 추천, 비추천, 종류 변경추가 사항PostService 추가커스텀 예외 추가 -> PostPostQueryRepository 인터페이스 추가변경 내용interface PostCrudUseCase - 수정recommend 유스케이스에 존재하던 인기글 변경 메서드가 삭제되고 crud 유스케이스에 각..

[TOY] 개발 - Application(UserService)

이전 진행 상황usecase 개발dto 개발UserPostCommentPhotoglobalUserUserService가 개발되며 새로운 dto 추가 및 구조가 변경되었습니다. 기존의 dto는 클라이언트 통신만을 위한 스펙으로 사용되고 내부 데이터 전송용 dto가 새로 생성되었습니다. 기존 UseCase의 파라미터에 넘어오는 dto를 외부 통신 스펙으로 변경함에 따라 모두 엔티티로 대체되었습니다.변경 사항dto 클라이언트 통신 스펙으로 사용 -> 내부 데이터 전송 xController dto -> 엔티티 변환 후 Service 호출usecase 파라미터 dto -> 순수 엔티티 변경User 엔티티 modify -> email 추가추가UserService 생성update용 dto 추가 -> UserUpdat..

[Grind75-LeetCode] Find Median from Data Stream JAVA

[Grind75-LeetCode] Find Median from Data Stream - Hard 접근heap (우선순위 큐)풀이중앙값을 찾는 클래스를 구현하는 문제이다. 중앙값이란 주어진 원소들을 순서대로 나열했을 때 중앙에 위치한 값을 말한다. 홀수인 경우 중앙값은 하나이지만 짝수인 경우 한 개의 중앙값이 존재하는 것이 아닌 중앙에 위치한 두 개의 값을 더하여 2로 나눈 값이 중앙값이 된다. 1,2,3,4 가 있다면 중앙의 2,3을 더한 값인 5에서 2로 나눈 2.5가 중앙값이 된다. 이러한 중앙값을 찾을 수 있는 클래스를 구현해야 하는데 정수를 추가하는 addNum과 중앙값을 반환하는 findMedian 두 메서드 구현이 목표이다. 이 문제는 간단하게 생각하면 배열을 두고 길이를 통해 중앙값 인덱스..

[TOY] 개발 - UseCase & DTO

이전 진행 상황domain.model 엔티티 클래스 개발domain.repository Jpa리포지토리 개발UserPostCommentPhotoUserUser 패키지 아래 개발입니다. login, crud 유스케이스가 존재하고 요청 응답을 위한 dto가 있습니다.interface UserCrudUseCase기본적인 crud가 정의된 유스케이스입니다.public interface UserCrudUseCase { User signupUser(UserDTO.Request userDTO); User updateUser(Long userId, UserDTO.Request userDTO); void deleteUser(Long userId); UserDTO.Response..

[Grind75-LeetCode] Trapping Rain Water JAVA

[Grind75-LeetCode] Trapping Rain Water - Hard접근투 포인터풀이양의 정수 값으로 배열이 주어지고 정수 값들은 벽(?)의 높이를 나타낸다. 그렇게 만들어진 벽에 비가 올 경우 물이 고이게 되는데 고인 물의 총량을 구하는 문제이다. 저번에 풀었던 컨테이너? 를 만드는 문제와 비슷하다.2024.11.19 - [알고리즘/코딩테스트-Grind75] - [Grind75-LeetCode] Container With Most Water JAVA [Grind75-LeetCode] Container With Most Water JAVA[Grind75-LeetCode] Container With Most Water - Medium 접근투 포인터풀이수직선의 길이가 들어있는 배열이 주어지고 수..

[Grind75-LeetCode] Serialize and Deserialize Binary Tree JAVA

[Grind75-LeetCode] Serialize and Deserialize Binary Tree - Hard접근전위 순회풀이이진트리의 직렬화, 역직렬화를 구현하는 문제이다. 직렬화란 프로그램 내에서 복잡한 데이터 구조인 객체, 트리, 그래프 등을 바이트 스트림 또는 문자열 형태로 변환하여 파일에 저장하거나 네트워크를 통해 전송할 수 있게 하는 개념이다. 복잡한 데이터를 일관된 형식으로 표현하여 직렬화 한 뒤 데이터를 전송하고 받은 직렬화된 데이터를 역직렬화하여 데이터 구조를 복원하여 사용한다. 이번 문제는 이진트리의 직렬화 과정과 역직렬화 과정을 구하는 문제인데 주어진 코드는 문자열 직렬화이지만 채점 기준으로 각 직렬화, 역직렬화를 통해 동일한 값을 얻을 수 있느냐 즉 정상적으로 직렬화와 역직렬화가..

[Grind75-LeetCode] Minimum Window Substring JAVA

[Grind75-LeetCode] Minimum Window Substring - Hard접근슬라이딩 윈도우풀이LeetCode에서 푸는 첫 Hard 문제로 Grind75에서 easy와 medium 문제는 끝이 나고 hard 난이도 문제가 시작되었다. 이 문제는 문자열 s, t가 주어지는데 문자열 t가 s안에 포함되는 가장 작은 단위의 부분 문자열을 구하는 문제이다. 문자열 t에 존재하는 문자들이 모두 포함되기만 하면 된다.s = "ADOBECODEBANC", t = "ABC"예제 1번으로 t의 문자가 모두 포함된 가장 짧은 길이인 "BANC"가 정답이 된다. t의 문자인 A, B, C가 모두 포함되어 있기 때문이다.  문제에서 window라고 했듯이 슬라이딩 윈도우를 사용하면 O(n + m)을 만족하며 ..

[Grind75-LeetCode] Kth Smallest Element in a BST JAVA

[Grind75-LeetCode] Kth Smallest Element in a BST - Medium접근중위 순회풀이BST, 이진 탐색 트리에서 K번째로 작은 요소를 찾아 반환하는 문제이다. 이진 탐색 트리이기 때문에 루트를 기준으로 작은 값은 왼쪽 큰 값은 오른쪽으로 나눠지기 때문에 그 점을 이용해 값을 찾으면 된다.  기본적으로 K번째 작은 값을 찾아야 하기 때문에 왼쪽 서브트리의 작은 값을 기준으로 탐색을 시작해야 한다. 루트를 기준으로 왼쪽 맨 아래 서브트리부터 탐색을 시작해 해당 서브트리의 루트, 오른쪽 서브트리 순으로 탐색을 진행해야 한다. 맨 아래 왼쪽 서브트리가 가장 작은 값이고 그다음으로 작은 값이 해당 노드의 루트 그리고 그다음으로 작은 값이 오른쪽 노드인데 이 순회의 형태는 중위 순..

728x90