본문 바로가기

Develop Study142

(25.03.27) 비트 마스크의 활용 : DP 심화 비트마스크가 생각보다 빠르게 적용할 수 있는 점을 알게 되어서 DP 부분에 많은 적용을 해보려고 노력하고 있다.  You are given an integer array nums. We call a subset of nums good if its product can be represented as a product of one or more distinct prime numbers.For example, if nums = [1, 2, 3, 4]:[2, 3], [1, 2, 3], and [1, 3] are good subsets with products 6 = 2*3, 6 = 2*3, and 3 = 3 respectively.[1, 4] and [4] are not good subsets with pro.. 2025. 3. 27.
(25.03.25) 비트 마스크의 활용 : DP DP 알고리즘은 메모이제이션과 이를 누적해서 DP 테이블에 저장하는 재귀 또는 반복을 채택하고 있다.하지만, 어떤 경우에는 저장해야하는 경우의수가 너무 많아 메모리를 너무 많이 사용하거나, 또는 알고리즘 코드를 작성하는데 복잡도가 높아질 수 있다. 이때 이전의 모든 조합 구하는 방식인 "비트마스크"를 활용해서 비교하면서 진행할 수 있다.You are given two integers m and n. Consider an m x n grid where each cell is initially white. You can paint each cell red, green, or blue. All cells must be painted.Return the number of ways to color the grid.. 2025. 3. 25.
(25.03.24) n개에서 k 고르기 : 재귀 백트래킹 VS 비트마스크 OO 사 코딩 테스트를 진행하면서, 기억에 남는 문제를 복기를 해서 알고리즘을 확인했다.최대한 많은 조합을 만드는 문제는 많은 알고리즘에서 발생을 했지만,만약 그 조합 중에 K개 만큼 특정 갯수가 변수로 주어진 경우에는, 불필요하게 모든 조합을 구하고, 그리고 거기서 k개의 요소를 가진 경우의 수를 모두 고르는 방식은 굉장히 비효율 적이다. 따라서 재귀 트백트래킹을 사용할 수 있지만, 이 보다 효율적인 메모리를 사용해서 재귀를 사용하지도 않고도, 순서 -> 비트로 사용하는 비트마스크 방식을 찾아 이를 적용하고 학습했다. [음료수 맛 조합 문제]여러 종류의 음료수가 주어집니다. 각 음료수는 여러 가지 맛을 가지고 있습니다. 4가지 맛이 있을 경우 음료수의 맛은 이진수(1101, 1000, etc) 로 주어.. 2025. 3. 24.
(25.03.13) Java Spring JPA @Converter & AttributeConverter Labeling Project를 진행하면서 JSON  형태의 데이터를 계속다루고 있고,좀더 유연한 자료의 저장을 위해서 MySQL 에서 활용하지만, 다양한 Entity에서 String 타입 또는 Json 타입으로 저장하기 위해서Service 단에서 같은 ObjectMapper로 변환하는 비효율적인 코드를 작성했다. 하지만,Converter를 사용하면서 좀더 효율적으로 사용할 것으로 판단했고Row Data 당 사용자가 활용한 Label 리스트 타입을 Json 타입으로 저장하는데 활용할 수 있었다. @Converter@Entity@Table(name = "samples")public class Sample extends Timestamp { ... @Column(columnDefinition = "J.. 2025. 3. 13.
(25.02.26) Git Flow 명령어와 활용 정리 실제 회사의 개발환경에서 macOS와 Linux기반으로 개발이 진행되다 보니 일반적인 깃을 사용하기 보다는 git flow를 적극적으로 활용하는 개발 규칙이 있어 급하게 git flow에 대해서 공부하고 실습하면서 중요한 내용들을 정리했다. Git FlowGit을 활용한 브랜치 전략(branching strategy), 소프트웨어 개발 프로젝트에서 효율적인 브랜치 관리를 위한 Workflow 모델기능 개발, 버그 수정, 배포 등을 체계적으로 관리하는 방법개발, 배포, 버그 픽스 등의 브랜치를 생성하고 병합하는 과정에서 규칙에 맞춰 빠르게 체계적으로 관리할 수 있도록 할 수 있음안정적인 배포병렬 개발버전 관리주요 Branch브랜치역할생성 시점main제품으로 출시되는 브랜치배포할 때develop개발 중인 최.. 2025. 2. 26.
(25.02.24) Event Sourcing 기업에서 인턴으로 업무를 지내면서 만들어야 될 POC 단계의 툴의 아키텍쳐를 기본적인 CRUD를 만드려고 했지만, 복잡한 Relation 과 구현으로 POC단계와 부합하지 않다는 의견을 받아,아카이빙하고 업데이트 하는 구조가 아닌 Event Sourcing 기반의 데이터 수정 업데이트 툴로 바꾸고자 했다.그렇게 많은 양의 데이터를 다루는 툴이 아니기 때문에 DB에 무리가 가지 않기 때문에 하나의 DB에서 업데이트를 진행하기 때문에 해당 패턴이 선정이 되었다.툴을 개발하기에 앞서 생소할 수 있는 Event Sourcing패턴의 정의와 의의를 공부하면서 기록했다.Event Sourcing데이터를 변경된 최종 상태만을 저장하는 것이 아닌 이벤트(event) 순서대로 저장 → 재구성하는 패턴기존의 CRUD 방식.. 2025. 2. 24.
(25.02.19) Java Spring Boot 에서 파일 읽어오기 & 내보내기 (CSV) 항상 데이터를 JSON 형식으로만 주고 받는 RESTful API에 익숙할 수 있지만,어플리케이션과 서비스에 따라서 인턴쉽회사에서 CSV기반의 파일로 여러 데이터를 한번에 DB에 옮기거나 읽으면서 처리를 해야하는 기능이 필요할 수도 있어, MongoDB 기반의 NoSQL기반의 DB와 연동한 상태에서Download Upload 를 실습하고자 했다.OpenCSV 라이브러리 의존성 추가 필수dependencies { implementation 'com.opencsv:opencsv:5.6' // OpenCSV 라이브러리 의존성 추가}Java Spring Boot 내에서 CSV 파일을 읽는 것 외 쓰는 작업도 유용하게 할 수 있기 때문에 사용CSVReader나 CSVWriter 클래스를 사용해서 데이터의 .. 2025. 2. 19.