Genie의 Java 개발 공부와 일지를 기록하는 아카이브 공간 Today I Learned123 (24.09.26) 정렬 알고리즘 : Quick Sort, Merge Sort Java에서 이미 Collecions 클래스를 통해서 이미 sort 메서드에서 내부적으로 진행하고 있는 정렬에대해서사실상 코딩 테스트나 실무에서는 크게 중심적으로는 사용하지는 않는 알고리즘이지만, 어떻게 작동이 된는 것인지, 그리고 분할한 뒤에 재귀적인 반복과 통합하는 방식의 정렬로알고리즘에 대해서 인식하고 이러한 방식을 참고해서 로직에서 참고할 수 있기 때문에, 따로 같이 블로그에 공부해서 스스로 코드도 작성하면서 정리퀵 정렬 Quick Sort데이터들을 어떤 기준이 되는 Pivot 데이터를 정해서 그 데이터 기준으로 작으면 왼쪽 크면 뒤로 미루는 분할 시켜 정렬하는 방식을 반복하면서 정렬하는 방식피봇은 대게 첫번째 또는 마지막 인덱스 값으로 선택순서를 보장하지 않고 오로지 정렬만을 하는 방식상대적으로.. 2024. 9. 26. (24.09.24) 객체 지향 설계 원칙, SOLID 원칙 이력서/자소서 작성과 면접 내용을 체계적으로 Notion에 정리하면서추가적으로 정리하는 내용에 대해서 블로그에 하나씩 더 자세하게 나만의 글로 적고 학습하려고 한다. 객체 지향 프로그래밍을 위해 Java언어와 Spring 프레임워크를 사용하면서,가장 많이 사용한 것이 IoC 제어의 역전과 DI 의존성 주입을 가장 중심적으로 고려하면서 프로젝트를 진행했다. 하지만, 객체지향의 디자인패턴을 다룰 때, SOLID 원칙을 고려한다고만 간단하게 알고 있었지,정확하게 각 원칙을 정리할 필요가 있었기 때문에, 해당 부분을 찾아가고,직접 정리하면서 최대한 기억을 하려고 했다. 간단할 수 있지만, Java 문법을 하면서 익혔던 polymorphism 등의 개념을 정확히 고려한 것을그대로 프로그래밍 구조를 구축을 할때 .. 2024. 9. 24. (24.09.05) 코딩테스트 알고리즘 정리(유니온 파인드 알고리즘) 유니온 파인드 Union-Find 알고리즘은 코딩테스트 대비에서 거의 출제빈도가 적은 알고리즘으로 알고 있다. 하지만, 지금까지 가중치에 따른 Graphy 구조에서 어떤 "경로" 관해서 집중한 알고리즘이 있다면,이번엔 같은 그룹 즉, 같은 루트에 해당하는 자료에서 특정 주어진 경로의 루트 값의 비교를 통해 같은 그룹인지 아닌지를 파악할 수 있도록 하는 알고리즘을 집중해서 찾아보고 학습을 해봤다. 생각보다 개인적올 이해하기가 살짝 어려워서 코드를 하나하나 쳐가면서 내가 스스로 낸 문제를 작성할 수 있었다.유니온 파인드 Union-Find서로소 집합(Disjoint Set)의 자료구조를 다루는데 사용되는 알고리즘연결된 요소 즉, 그룹을 빠르게 찾아낼 수 있는 알고리즘그룹은 하나의 부모에 여러 요소가 포함되어.. 2024. 9. 5. (24.09.04) 코딩테스트 알고리즘 정리(동적 계획법 Dynamic Programming / 다익스트라 알고리즘) 개발 이력서/Portfolio 동시에 준비 + 기존 완성 프로젝트 Update/점검 상황에서 매일 알고리즘 학습을 하는게 워낙 어려운 일이 아닌 것 처럼 느껴져서 심리적으로 압박이 크다. 코딩테스트 준비이기도 하지만, 학습하면서, 로직에서 구현되어야할 알고리즘을 배우는 것도 나름 흥미가 있고,학습한 동적 계획법 처럼 어떤 특정 패턴의 알고리즘이 아닌 로직을 구성하는 방법에 관한 것들도실제 코드를 작성하는데 도움이 될 것으로 생각해서 내 언어로 하나하나 정리하면서 학습 동적 계획법 Dynamic Programming하나의 문제를 큰 문제를 여러개의 문제로 쪼개서 결과를 저장 → 다시 해결에 사용하는 방식DFS에서의 재귀방식을 사용할 시, 과하게 많은 로직이 반복이 되거나, 또는 많은 양의 반복문을 계속해서.. 2024. 9. 4. 이전 1 2 3 4 5 6 7 ··· 31 다음