[백준] 23085번: 판치기
📌 문제 https://www.acmicpc.net/problem/23085 📌 설명 처음에 BFS인지 감도 안 잡히는 문제였다. BFS로 풀어야 한다는 것을 알아도 코드를 작성하기 힘들었다. 인터넷의 도움을 통해 어느 동전이 H고 T인지가 중요한 것이 아니라 H 또는 T 상태인 동전의 수가 중요하다는 것을 알았다. 초기 H의 상태와 뒤집은 횟수...
📌 문제 https://www.acmicpc.net/problem/23085 📌 설명 처음에 BFS인지 감도 안 잡히는 문제였다. BFS로 풀어야 한다는 것을 알아도 코드를 작성하기 힘들었다. 인터넷의 도움을 통해 어느 동전이 H고 T인지가 중요한 것이 아니라 H 또는 T 상태인 동전의 수가 중요하다는 것을 알았다. 초기 H의 상태와 뒤집은 횟수...
📌 문제 https://www.acmicpc.net/problem/9328 📌 설명 전형적인 BFS 문제이다. 고려해줘야 할 점이 너무 많았다. 열쇠나 문을 열었을 때 다시 BFS을 수행해주어야 한다는 점이 생각하기 힘들었다. 초기 배열을 입력받고 가장자리를 돌며 들어갈 수 있는 좌표는 q에 삽입한다. 들어갈 수 있는 조건은 빈 공간, 열쇠가 ...
📌 문제 https://www.acmicpc.net/problem/1508 📌 설명 이분 탐색을 통해 가장 가까운 심판 간 거리가 최대가 되는 경우를 찾는다. 백준 2110번: 공유기 설치와 유사한 문제이다. 아래는 공유기 설치 문제에 대한 해답 코드이다. #include <iostream> #include <algorithm&...
📌 프록시 객체란? JPA 공부를 하다 보면 프록시 객체라는 개념이 등장한다. 지연 로딩에서 프록시 객체를 로드하는데, 실제로 데이터가 필요할 때까지 실제 객체를 로드하지 않는다. 조금 더 자세히 알아보자. 특징 프록시 객체는 실제 엔티티 객체를 감싸는 가상의 객체로, 실제 데이터가 필요할 때까지 DB 조회를 지연시키는 역할을 한다. 쉽게 표현하...
📌 문제 https://www.acmicpc.net/problem/9370 📌 설명 1부터 n까지의 노드가 존재하고, 출발 노드 s가 존재한다고 하자. 추가로 두 노드 g, h가 주어지는데, 다익스트라 알고리즘을 통해 최단 경로를 계산할 때, (g, h) 간선을 포함하는 노드를 출력해야 한다. 예를 들어 노드 k까지 최단 경로를 구했다고 하자....
📌 문제 https://www.acmicpc.net/problem/1016 📌 설명 에라토스테네스의 체 알고리즘의 아이디어에 착안하여 해결하는 문제이다. $a$와 $b$ 사이에 존재하는 제곱 ㄴㄴ 수를 찾는 방법은 다음과 같다. $a \leq x \leq b$인 $x$ 중 $x \ \text{mod}\ p^2 = 0$ 를 만족하는 $x$를 소...
📌 N+1 문제란? N+1 문제 는 연관 관계가 있는 엔티티를 조회할 때 발생할 수 있는 문제이다. 하나의 쿼리를 기대했으나 의도치 않게 N개의 쿼리가 추가로 발생하는 문제를 말한다. 여기서 N개란 기대한 하나의 쿼리의 결과 수이다. 그래서 1+N으로 생각하는 것이 이해하기 쉽다. 보통 JPA를 사용할 때 많이 언급되는 문제이나, 다른 ORM 프...
📌 JPA란? JPA(Java Persistence API) 는 자바 애플리케이션에서 RDBMS를 사용하기 위한 표준 ORM 기술이다. JPA는 인터페이스로, 이를 구현한 구현체를 사용해야 한다. JPA의 구현체는 Hibernate, EclipseLink, OpenJPA, DataNucleus 등이 있다. 전체적인 데이터 흐름은 아래와 같다....
📌 문제의 코드 @Transactional public void saveTools() { List<SubCategory> subCategories = subCategoryRepository.findAll(); for (SubCategory subCategory : subCatego...
📌 트랜잭션 트랜잭션은 DBMS에서 발생하는 하나의 논리적 작업 단위이다. 하나의 작업에는 하나 이상의 쿼리문이 포함된다. 예를 들어 ‘인출’이라는 작업은 계좌에 잔액을 확인하고 일정 금액을 빼서 금액을 업데이트하는 것을 포함한다. 📌 트랜잭션의 연산 Commit commit 연산이 수행되면 트랜잭션 내에서 수행된 작업이 DB에...