목록전체 글 (168)
HyeLog
🙋♀️ 문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 🧩 알고리즘 문제는 2개 부분으로 나눌 수 있음 1) 벽을 3개 세우기 → 벽을 어떻게 세워야 안전영역의 크기가 최대가 되는지 모르기 때문에 다 해봐야 하므로, 브루트포스 알고리즘 사용 시간복잡도: O((N * M)^3) 2) 바이러스가 퍼질 수 없는 곳의 크기 구하기 → 한 정점에서 시작해서 모든 정점 방문 = DFS / BFS 알고리즘 사용 시간복잡도: O(N * M) ⇒ 총 시간복잡도: O..
🙋♀️ 문제 https://www.acmicpc.net/problem/16948 16948번: 데스 나이트 게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 "데스 나이트"를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면, (r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다. 크 www.acmicpc.net 🧩 알고리즘 문제의 목적: 모든 정점 방문, 최단거리 구하기 → BFS 알고리즘 한 칸(정점)에서 다른 칸(정점)으로 이동할 때 1번 이동하는 것이므로 모든 가중치가 1인 문제 → BFS 알고리즘 💡 아이디어 흔한 유형의 문제로, dx 배열과 dy 배열을 사용해서 어렵지 않게 해결할 수 있음 👩💻 코드 ..
🙋♀️ 문제 https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 🧩 알고리즘 문제의 목적: 모든 정점 방문, 최단거리 구하기 → BFS 알고리즘 Tip) 그래프로 바꿀 수 있고 모든 가중치가 1인 문제 → BFS 알고리즘 BFS 알고리즘의 핵심은 큐에 정점을 넣을 때 방문 처리를 하는 것이다. 💡 아이디어 arr 배열에 2차로 이동할 칸을 저장한다. 여기서 '2차'의 의미를 설명하자면, 1차 이동이 ..

👩👧👦 상속관계 매핑 관계형 데이터베이스에는 '상속관계'와 비슷한 개념인 '슈퍼타입 서브타입 관계'가 있다. 이것을 객체 상속과 매핑하는 전략에 대해 알아보자. '슈퍼타입 서브타입 관계'를 실제로 테이블로 구현하는 방법은 3가지가 있다. 1) 조인 전략 2) 단일 테이블 전략 3) 구현 클래스마다 테이블 전략 💿 단일 테이블 전략 이제 엔티티를 만들어보자. 아래와 같이 엔티티를 만들면, 디폴트로 단일 테이블 전략이 선택된다. @Entity public class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String price; } @Entity pu..

🔭 연관관계 매핑시 고려사항 3가지 다중성 (다대일 / 일대다 / 일대일 / 다대다) 단방향 / 양방향 (참조용 필드가 있는 엔티티로만 참조 가능 → 한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향) 연관관계의 주인 (양방향 매핑시) 다대일 단방향 👨👩👧👦:👩 다대일(@ManyToOne) 단방향은 가장 많이 사용하는 연관관계이다. 예시) 회원 : 팀 = N : 1 일 때 회원 엔티티에서만 팀을 참조 @Entity public class Member { @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; 다대일 양방향 👨👩👧👦:👩 다대일 양방향은 다대일 단방향에 가짜 매핑을 추가해서 양쪽이 서로 참조할 수 있도록 만든 것이다. 이때 D..
📜 예제 시나리오 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 즉, 회원 : 팀 = N : 1 관계이다. ⚙️ 객체 지향 모델링 - 단방향 연관관계 Member 엔티티에 Team 객체를 필드로 추가한다. (주석 처리한 부분은 데이터 중심 모델링으로 적합하지 않다.) 회원과 팀은 다대일 관계이므로 @ManyToOne 을 붙여주고, 팀의 어떤 컬럼과 조인하는지 @JoinColumn 으로 명시한다. @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private St..

※ 이번 실습 때 내가 설치한 H2 데이터베이스 버전 때문에 @GeneratedValue 가 제대로 작동하지 않아서, H2를 아예 삭제하고 1.4.200 버전으로 재설치했다. 재설치할 때 기존 H2로 인해 만들어진 파일들을 꼭 삭제해야 한다. (참고: https://www.inflearn.com/questions/429626 , https://www.inflearn.com/questions/459129) 👩💻기본키(PK) 매핑 직접 할당 → @id 자동 생성 → @GeneratedValue @GeneratedValue는 데이터베이스에서 PK가 자동으로 생성되게 하고 싶을 때 사용한다. GenerationType은 3가지(TABLE / IDENTITY / SEQUENCE)가 있다. 디폴트는 AUTO로, ..
@Entity - 클래스에 @Entity 를 붙이면 JPA가 관리한다. 매핑할 테이블 이름이 다를 경우 @Table의 name 속성으로 설정이 가능하다. - ⭐@Entity 클래스는 반드시 기본생성자가 있어야 한다. @Entity @Table(name = "User") public class Member { @Id private Long id; private String name; // JPA 는 기본 생성자가 필수. public Member() { } } DB 스키마 자동 생성 기능 persistence.xml에 아래 코드를 추가하면, DB 스키마가 자동으로 생성된다. 예를 들어, 위와 같이 @Entity가 붙은 Member 클래스가 있으면, 애플리케이션 실행 시점에 'drop table Member ..