9장_값 타입 JPA의 데이터 타입을 크게 두 가지로 나누면 엔티티 타입과 값 타입이 있다. 엔티티 타입은 @Entity로 정의하는 객체고, 값 타입의 경우 자바 기본 자료형부터 객체까지 가능하다. 엔티티 타입의 경우는 식별자로 구분되기 때문에 식별자 값만 변하지 않는다면 같은 엔티티로 인식된다. 하지만 값 타입은 식별자가 없기 때문에 값이 달라지면 완전히 다른 값으로 대체된다. 값 타입은 세 가지로 나눌 수 있다. 자바 기본형 임베디드 타입 컬렉션 타입 임베디드 타입은 JPA에서 사용자가 지정한 값 타입이고 컬렉션 타입은 하나 이상의 값 타입을 저장할 때 사용한다. 기본 값 타입 기본 값 타입은 엔티티에 의존한다. 엔티티가 사라지면 값 타입 역시 소멸된다. 또한, 값 타입은 절대 공유되지 않는다. 임베..
전체 글
int[] arr = {5,1,3,4,2};// 오름차순 정렬Arrays.sort(arr);위와 같이 정수형 배열을 오름차순으로 정렬하려면 Arrays.sort메소드를 사용하면 된다. 특정 구간을 정렬하려고 하면 Arrays.sort(arr, 시작, 끝)을 통해 구간을 오름차순으로 정렬할 수 있다. 내림차순으로 정렬하고 싶다면 어떻게 해야할까?매개변수가 없는 sort 자체는 오름차순 정렬밖에 지원하지 않는다. 그럼 매개변수에 비교기준을 반대로 넣으면 되지 않을까?Arrays.sort((num1,num2)-> num2 - num1);와 같이 말이다. 하지만, 이는 불가능한데 sort메서드가 Comparator 함수형 인터페이스를 매개변수로 사용하고 있기 때문이다. Comparator 인터페이스는 객체간의 ..
13913번: 숨바꼭질 4 처음에는 Move 클래스 안에 StringBuilder나 StringBuffer를 넣어서 이전의 경로를 복사해서 최종 경로를 찍도록 했는데 시간 초과가 났다. 아무래도 복사 비용과 새 인스턴스 생성하는 비용이 커서 그런 것 같다. 그래서 예전에 봤던 방법을 사용했는데 prev 배열에 직전 경로를 저장하는 방법이다. prev[a] = b 는 a로 가기위해서는 b를 거친다는 의미이다. 이후 아래와 같이 마지막 K부터 시작점 N까지의 경로를 추적해서 출력하면 된다. int index = K; while(index != N){ index = prev[index]; } 방문 처리 위치에 따라 직전 경로가 갱신이 될 수 있기 때문에 방문 처리 위치도 중요하다. static void BFS..
1202번: 보석 도둑 아이디어 생각해내는게 너무 어려웠다. 처음에는 보석 이 들어가길래 습관적 DP로 생각했는데, 각 가방의 크기가 너무 커서 배열로 담을 순 없다는 것을 깨달았다. 그래서 ‘가방의 사이즈를 배열의 값으로 담아 K개 저장한뒤 오름차순으로 정렬해야겠다’까지는 쉽게 생각이 났다. 그 뒤로 한 시간 이상 고민했고, 풀이방법만 봐야겠다 싶어 확인해봤는데 아이디어는 간단했다. 우선순위 큐를 두개 준비한다. 하나는 무게를 오름차순으로 정렬하고 하나는 가치를 기준으로 정렬할 것이다. 이를 각각 pqByWeight와 pqByValue라고 하겠다. 입력받은 모든 보석들을 pqByWeight에 넣는다. 가방을 입력받고 가방의 최대무게를 오름차순으로 정렬한다. 각 가방의 최대 무게마다 해당 무게보다 낮은 ..