DFS특징 모든 정점을 방문하고자 할 때 사용됨.재귀(Recursion) 혹은 스택(Stack)을 이용하여 구현.무방향 그래프나 방향 그래프 모두에 적용.모든 경로를 탐색하기 때문에 경로의 길이가 길어질 경우에는 BFS에 비해 시간이 오래 걸릴 수 있음.어떤 경로가 있는지를 확인할 때 사용.장점현재 경로 상의 노드들만 기억하면 되므로 메모리 사용량이 적음.목표 노드가 깊은 단계에 있을 경우 해를 빨리 찾을 수 있음.단점최단 경로를 보장하지 않음.무한 루프에 빠질 수 있음.그래프가 큰 경우에는 탐색 공간이 너무 커져서 메모리 문제가 발생할 수 있음.import java.util.ArrayList;import java.util.List;public class Graph { private int V; /..
1. String 1-1. 문자열 붙이기, 자르기 String N = "abcd"; Sring K = "efgh"; String s = N + K; //O(N+K) s.substring(5); //"fgh" //O(N) s.substring(0,3); //"abc" 1-2. 입력 BufferedReader - 입력 라이브러리, String 객체만 다룸 예1) 한 줄 입력, 한 줄에 한 단어 public Class main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine();..
JPA - Java Pesistence API - 자바 진영의 ORM 표준 기술 ORM - 객체와 RDB를 연결하는 프레임워크 - Object-relational mapping(객체 관계 매핑) - 객체는 객체대로 설계 - 관계형 데이터베이스는 관계형 데이터베이스대로 설계 - ORM 프레임워크가 중간에서 매핑 - 대중적인 언어에는 대부분 ORM 기술이 존재 JPA 동작 방식 애플리케이션 입장에선 자바 컬렉션에 저장하듯이 JPA를 이용하면 됨 JPA의 논리적 구조는 다음과 같음 - 애플리케이션과 JDBC 사이에서 동작 - 저장 - 조회 JPA의 물리적 구조 - JPA는 표준 명세서, 인터페이스의 모음 - JPA의 구현체 : 하이버네이트, EclipseLink, DataNucleus JPA를 사용해야 하는 ..
객체의 인스턴스 저장소가 DB인 경우와 자바 컬렉션(list, set)인 경우 코드와 성능에서 크게 차이가 남 저장소가 DB인 경우 애플리케이션은 객체 지향 언어(Java...)를 사용하지만 데이터는 관계형DB에 보관. 애플리케이션과 데이터가 상호작용하기 위해선 객체를 SQL로 변환해 쿼리문을 DB에 전달 해야됨. DB에 인스턴스를 보관하는 경우 애플리케이션 계층에서 객체답게 모델링 할수록 매핑 작업이 늘어남. DB와 객체의 패러다임이 불일치!! 저장소가 자바 컬렉션인 경우 애플리케이션의 객체를 별도의 변환 없이 저장할 수 있음 객체의 인스턴스 저장소가 DB인 경우와 자바 컬렉션(list, set)인 경우 코드와 성능에서 크게 차이가 남 1. 상속 DB 테이블은 '상속 관계' 개념을 갖고있지 않음 관계형..
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main{ public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String [] input = br.readLine().split(" "); int N = Integer.parseInt(input[0]); int K = Integer.parseInt(input[1]); int D[][] = new int[N+1][N+1]; for(int i = 0; i < N+1; i++){ D[i][0..
1. 프로젝트 생성 dependencies: Spring Web, Thymeleaf Dependencies - 라이브러리 선택 Spring Web - 웹 개발에 필요한 라이브러리 Thymeleaf - HTML을 생성하는 템플릿 엔진 위와 같이 프로젝트 생성 후 Intellij에서 hello-spring 폴더에 위치한 build.gardle 오픈 더보기 Grale 라이브러리를 가져오고 빌드를 관리하는 툴 CI/CD를 위해 여러 작업들(Compile, Test, Packaging, Deploy&Run)을 자동화 시켜줌 Packaging - 스프링 코드를 패키징 해 .jar, .war 파일로 생성 jar 파일 - 컴파일된 여러 .class 파일이 포함된 단일 파일어플리케이션을 서버에 배포할땐 Gradle에서 ..
@PersistenceContext 영속성 컨텍스트: 엔티티를 영구 저장하는 환경 스프링에는 영속성 관리를 위해 EntityManager존재 EntityManager를 빈으로 주입할 때 사용 EntityManager는 영속성 컨텍스트에 엔티티를 보관하고 관리 //MemberRepository @Repository public class MemberRepository { @PersistenceContext private EntityManager em; public Long save(Member member){ em.persist(member); return member.getId(); } public Member find(Long id){ return em.find(Member.class, id); }//..
