본문 바로가기

전체 글79

1727. Largest Submatrix With Rearrangements - Java 이번에 다룰 주제는 알고리즘 문제풀이 입니다. 제가 푸는 모든 문제들을 기록하진 않고, 풀면서 기록이 필요하다 싶은 문제들만 정리해서 기록하려고 합니다! 해당 문제가 기록이 필요하다고 느낀 이유는 문제 해결을 위한 접근 방식을 기록해보고, 해당 접근 방식의 문제점과 해당 문제점을 해결하기 위해 어떤 접근 방식을 생각해 내야 하는지를 기록함으로써 제가 어려워 하는 부분들을 찾아낼 수 있기 때문입니다. 이제 문제를 살펴보겠습니다. 문제 https://leetcode.com/problems/largest-submatrix-with-rearrangements/ Largest Submatrix With Rearrangements - LeetCode Can you solve this real interview qu.. 2023. 11. 26.
프로젝트 중복 제거 1 - 인터페이스를 이용한 공통 작업 추출 이번 포스팅 주제는 현재 진행중인 프로젝트 리팩터링 입니다. 리팩터링은 프로젝트 코드의 내부 동작은 그대로! 어떤 코드 외적인 요소들을 좀 더 가다듬는 작업입니다. 리팩터링의 주된 목적은 가독성, 유지보수성 등 코드의 품질을 높이는 것이고, 이를 통해 개발 생산성과 좀 더 견고하면서 유연한 제품을 만드는 것입니다! 리팩터링 전 코드 간단한 함수 설명을 드리면 해당 함수들의 기능은 서버에 특정 상황이 발생하면 클라이언트에 데이터를 전송하는 코드입니다. 여기 위에 함수 두개는 너무나도 중복되고 있습니다. 그 이유는 List에 요소가 서로 다른데 이 두개를 어떻게 하나로 묶어야 할지 그 당시에는 몰랐기 때문에 우선 저런식으로 코드를 작성한 것입니다. 문제점 저는 객체를 생성하는 부분이 가장 근본이 되는 문제라.. 2023. 9. 10.
Strategy Pattern - 전략 패턴 이번 포스팅 주제는 GoF 디자인 패턴 중 하나인 Strategy Patten - 전략 패턴 입니다. 게시판의 검색 서비스를 리팩터링 하기 위해 좀 더 좋은 방법이 없을까 찾아보다 책에서 읽은 전략 패턴이 기억나 적용 해보려고 합니다! 리팩터링 전 @Transactional(readOnly = true) public Page searchArticles(SearchType searchType, String searchKeyword, Pageable pageable) { if(searchKeyword == null || searchKeyword.isBlank()){ return articleRepository.findAll(pageable).map(ArticleDto::from); } return switc.. 2023. 9. 3.
모던 자바 인 액션 - 10장 람다를 이용한 도메인 전용 언어 배울 내용 도메인 전용 언어(domain-specific languages, DSL)이란 무엇이고, 어떤 형식으로 구성되는가? DSL을 API에 추가할 때의 장단점 JVM에서 활용할 수 있는 자바 기반 DSL을 깔끔하게 만드는 대안 최신 자바 인터페이스와 클래스에 적용된 DSL에서 배움 효과적인 자바 기반 DSL을 구현하는 패턴과 기법 이들 패턴들은 자바 라이브러리와 도구에서 얼마나 흔히 사용되는가? 서론 많은 개발자들이 프로그래밍 언어도 결국 '언어' 라는 사실을 잊곤 합니다. 언어라는 것은 전달하고자 하는 바를 명확하고 안정적인 방식으로 전달하는 것입니다. 프로그래밍 언어도 결국 언어라는 사실은 프로그램도 결국 사람들에게 이해하기 쉽고 명확한 형태로 만들어져야 한다는 것을 의미합니다. 이해하기 쉬운 .. 2023. 8. 27.