분류 전체보기

Algorithm

[알고리즘] BFS 너비 우선 탐색 알아보기 ( 백준 2178번 미로 탐색 with 자바 )

🤔 BFS ( Breadth First Search ) 너비 우선 탐색? 그래프 탐색 알고리즘의 하나로, 루트 노드에서 시작하여 인접한 노드를 먼저 탐색하는 방법입니다. 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법입니다. 즉, 깊게 탐색하기 전에 넓게 탐색하는 것입니다. 두 노드 사이의 최단 경로 또는 임의의 경로를 찾고 싶을 때 쓰입니다. 장점 출발노드에서 목표노드까지의 최단 경로를 보장한다. 단점 노드의 수가 많을수록 탐색 가지가 급격하게 증가하여 보다 많은 기억 공간이 필요하다. 해가 존재하지 않는다면 유한 그래프의 경우 모든 그래프를 탐색한 후에 실패한다. ✔ 문제유형 최단 경로 찾기 ✔ 시간복잡도 노드가 N이고, 간선의 수가 E인 그래프의 경..

Algorithm

[알고리즘] DFS 깊이 우선 탐색 알아보기 ( 백준 2667번 단지번호 붙이기 with 자바)

🤔 DFS ( Depth First Search ) 깊이 우선 탐색? 그래프 탐색 알고리즘으로 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 알고리즘 입니다. 즉 그래프 형태의 자료구조에서 루트 노드에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법입니다. 그림처럼 한 방향으로 인접한 노드가 없을 때까지 탐색한 후 이전 노드로 돌아가서 다음 인접한 노드를 탐색하며 이 과정을 반복합니다. 장점 현재 경로상의 노드를 기억하기 때문에 적은 메모리를 사용합니다. 찾으려는 노드가 깊은 단계에 있는 경우 BFS보다 빠르게 찾을 수 있습니다. 단점 DFS를 통해 얻어진 해가 최단 경로라는 보장이 없습니다. DFS는 찾으려는 해에 도착하면 탐색을 종료하기 때문입니다. 최..

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 개발 과정에서 만난 고민 builder?, Spring Data JPA?, DTO?

🤔 고민 강의, GPT, 구글링을 하며 혼자서 개발하다보니 계속해서 새로운 문제에 직면하게 되었다. 객체를 생성할때에는 어떤 방법이 더 좋지? 인터페이스를 만들고 구현체를 만들어 역할과 구현을 분리? Controller계층 즉 표현 계층에는 직접 Entity를 만들지 말고 DTO를 사용해서 값을 전달해줘야 하는데 그럼 DTO의 범위는 어디까지? ... 또 하나를 해결하면 다른 의문들이 떠올라 진행이 어려웠다. ✔ 객체를 생성할 때에는 어떤 방법이 더 좋지? 기존에 생각없이 setter메소드를 통해서 객체를 생성 후 값을 설정해주면서 일관성과 불변성을 해치고있었다. 고민 하던중 builder패턴에 대해서 알게되었다. 🔎 빌더 패턴 정리 [디자인 패턴] builder패턴 🤔 빌더 패턴(Builder Patt..

Backend

[디자인 패턴] builder패턴

🤔 빌더 패턴(Builder Pattern) ? 복잡한 객체의 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴이다. 생성자에 들어갈 매개 변수를 메서드로 하나하나 받아들이고 마지막에 통합 빌드해서 객체를 생성하는 방식이다. 출처 : Inpa Dev ✔ 기존 패턴 🔎 생성자 패턴 생성자를 통해서 값을 설정하는 패턴이다. 오버로딩을 통해 필수로 설정해야하는 값들과 하지 않아도 되는 값들을 조절하여 만들 수 있다. 하지만 클래스의 필드가 많을경우 생성자의 매개변수 또한 늘어나게 되고 입력한 매개변수의 순서에 맞게 값들을 입력해야 하기 때문에 순서를 모두 기억하지 않는다면 실수를 유발할 수 있고, 생략하고싶은 매개변수를 선택적으로 생략할 수 없다. public class Member..

Backend/JPA

[JPA] 객체 지향 모델링과 양방향,단방향 연관관계 매핑

🤔 기존의 문제점 객체를 테이블에 맞추어 모델링 try{ //팀 등록 Team team = new Team(); team.setName("TeamA"); em.persist(team); //맴버 등록 Member member = new Member(); member.setUsername("member1"); member.setTeamId(team.getId()); // **외래키 식별자를 직접 다루고 있다.** em.persist(member); //조회 Member findMember = em.find(Member.class, member.getId()); Long findTeamId = findMember.getTeamId(); // 맴버객체에 저장된 팀아이디 즉 외래키를 찾는다 Team findTe..

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 프로젝트 생성 및 환경 설정 + 엔티티(Entity) 생성 - 2

🔥 프로젝트 생성 Spring initializer 를통해 버전 정보, 언어, 이름, 의존성 등을 설정하고 프로젝트를 생성해줍니다. 💡 Dependencies Lombok : 어노테이션을 사용하여 getter, setter와 같은 반복되는 형식적인 코드를 줄이기 위해 의존성 설정합니다. Spring Web : Spring MVC, Apache Tomcat 등 웹개발에 필요한 의존성을 제공합니다. Thymeleaf : Thymeleaf 템플릿 엔진 사용하여 View를 렌더링 하기위해 의존성 설정합니다.Spring Data JPA : JPA를 사용하기 위해 의존성 설정합니다.( 🚨 아직 Spring Data JPA를 배우지 않았기 때문에 JPA만으로 개발하도록 하겠습니다. ) MariaDB Driver : ..

장용석
'분류 전체보기' 카테고리의 글 목록 (5 Page)