FickleBoBo

[Programmers] 154540번 - 무인도 여행 [Java][C++]

문제 링크 1. 문제 풀이 지도에 무인도들이 주어져 있고 각 무인도는 섬의 모든 숫자의 합으로 머물 수 있는 날이 정해질 때 지도에서 각 섬별로 머물 수 있는 날을 오름차순으로 구해야 하는 문제다. BFS를 활용해서 지도를 순회하며 섬을 발견하면 해당 섬에 머물 수 있는 날을 계산하며 섬을 방문 처리하는 방식으로 해결했다. 2. 코드 ...

Preview Image

[자바 ORM 표준 JPA 프로그래밍 - 기본편] 섹션 04. 영속성 관리 - 내부 동작 방식

1. 영속성 컨텍스트 1 JPA에서 가장 중요한 것을 2가지 뽑는다면 객체와 관계형 DB 매핑하기와 영속성 컨텍스트이다. 지난 시간에도 잠깐 나왔는데 엔티티 매니저 팩토리는 클라이언트의 요청마다 엔티티 매니저를 생성하며 엔티티 매니저가 DB 커넥션을 사용해서 DB에 쿼리를 보내는 구조다. 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이...

[Programmers] 154538번 - 숫자 변환하기 [Java][C++]

문제 링크 1. 문제 풀이 다이나믹 프로그래밍을 활용해도 되고 BFS를 활용해도 해결할 수 있다. 다이나믹 프로그래밍의 경우 dp 테이블에서 인덱스를 숫자 $i$, 값을 $x$ 에서 해당 숫자로 변환하는데 필요한 최소 쵯수를 기록하면 된다. 초기 무한대로 초기화한 후 $dp[x] = 0$ 으로 초기화를 해준다. 이후 $x$ 부터 $n$ 을...

[BaekJoon] 9328번 - 열쇠 [Java][C++]

문제 링크 1. 문제 풀이 1층 빌딩의 정보가 주어져 있을 때 훔쳐올 수 있는 문서의 최대 개수를 구하는 문제다. BFS를 활용하면 해결할 수 있는데 먼저 빌딩 외부에서 빌딩의 경계 중 통과할 수 있는 곳을 통해 진입한다는 점에서 빌딩 외부에 빈 공간으로 이루어진 패딩을 한 칸 주고 $(0, 0)$ 에서 탐색을 시작해서 시작점을 찾는 로직을...

[BaekJoon] 2178번 - 미로 탐색 [Java][C++]

문제 링크 1. 문제 풀이 주어진 미로에서 이동할 수 있는 칸을 통해 $(1, 1)$ 에서 $(N, M)$ 까지 가는 최단거리를 구하는 문제로 사방 탐색과 BFS를 활용하면 간단하게 해결할 수 있다. 2차원 배열로 미로가 표현됐으므로 사방 탐색으로 다음에 이동할 후보지를 탐색하고, BFS는 큐의 크기만큼 탐색하면 등거리의 모든 후보를 탐색한...

[BaekJoon] 1260번 - DFS와 BFS [Java][C++]

문제 링크 1. 문제 풀이 주어진 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 문제로 정점 번호가 작은 것을 먼저 방문해야 한다. 인접 리스트를 활용했는데 이때 정점 번호가 작은 것을 먼저 방문할 수 있게 트리셋을 활용해서 정렬을 해줬다. 인접 리스트의 경우 양방향 연결을 해야함에 주의해야 한다. 2. 코드 1...