반응형
문제 설명 입출력 예제 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 풀이 코드 이 문제의 핵심 내용만 정리하면 다음과 같다. 현재 20병의 맥주를 가지고 있다. 50미터에 한 번씩 맥주 한 병을 마신다. (즉, 한번에 1000m를 갈 수 있다.) 편의점에 갈 때마다 새로운 맥주를 20병 얻을 수 있고 나선 직후 50미터에 한 번씩 맥주 한 병을 마신다. (즉, 편의점 위치 부터 페스티벌 까지 이동을 시작한다.) 시작위치에서 페스티벌까지 (1000m = 맥주 20개 * 50m) 갈수 있다면 "happy..
문제 설명 풀이 코드 가장 핵심은 "A가 B를 신뢰한다."는 즉, "B는 A의 부모 노드"이라는 점이다. 아래 그림은 위의 "예제 입력 1"에 해당하는 값대로 노드를 표현한 그림이다. 만약 1번 노드에서 시작한다면 3, 4, 5 총 3개의 노드를 탐색하는 것이고 3번 노드에서 시작한다면 4, 5를 탐색하는 것이 된다. 탐색 노드 1번 2번 3번 4번 5번 탐색 수 3 3 2 0 0 먼저 입력값을 받아, 노드 연관관계 리스트를 만든다. 각 노드마다 bfs 탐색을 시작해 해당 노드에서 시작하여 총 몇개의 노드를 탐색하는지 카운팅하여 리스트에 저장한다. 가장 많은 노드를 탐색한 노드를 출력한다. 정답 코드 from collections import deque import sys input = sys.stdin..
@Modifying 이란?Spring Data JPA에서 사용되는 애노테이션으로, @Query 어노테이션을 통해 작성된 변경이 일어나는 쿼리(INSERT, DELETE, UPDATE )를 실행할 때 사용된다.@Modifying을 변경이 일어나는 쿼리와 함께 사용해야 JPA에서 변경 감지와 관련된 처리를 생략하고 더 효율적인 실행이 가능하다.@Modifying@Query("UPDATE User u SET u.name = :name WHERE u.id = :id")int updateUserName(@Param("id") Long id, @Param("name") String name);▶ @Query, @Param 알아보기 (클릭) 📌 벌크 연산이란?벌크 연산은 데이터베이스에서 UPDATE, DELE..
Fetch Join JPQL에서 성능 최적화를 위해 제공하는 기능으로 연관된 엔티티나 컬렉션들을 한번의 SQL 쿼리로 함께 조회할 수 있다. 연관된 엔티티에 대해 추가적인 쿼리를 실행할 필요 없이 효율적인 로드를 할 수 있는 것이다. 즉, 패치 조인은 성능 최적화에 주로 사용되며, N+1 문제를 해결하는 데 효과적이다. 예를 들어 Order와 Product 엔티티가 있고, 이 둘이 (1 : N) 일대다 연관관계가 있다고 가정해보자. Order 엔티티를 조회하면서 관련된 상품(Product) 엔티티도 한 번의 쿼리로 함께 조회하기 위해 패치 조인을 사용할 수 있다. SELECT o FROM Order o JOIN FETCH o.products 위의 쿼리는 패치 조인을 사용하여 Order 엔티티와 관련된 P..
JPA에서는 연관된 엔티티를 가져오는 방법으로 지연 로딩과 즉시 로딩이 있다. 지연 로딩 지연 로딩은 연관된 엔티티를 사용할 때까지 로딩을 지연하는 방식이다. 지연 로딩을 사용함으로써 연관 엔티티의 데이터를 사용할 필요가 없는 경우, 쿼리 수행과 시간을 절약할 수 있다. @xxToxx(fetch = fetchType.LAZY) 언제 지연로딩을 사용할까? 연관 엔티티를 많이 사용하지 않는 경우 부모 객체를 조회할 때 자식 객체를 따로 조회하지 않고, 자식 객체가 필요한 경우만 로드하여 사용할 때 유용하다. 실제로 필요한 경우에만 연관 엔티티를 사용하는 경우 연관 엔티티가 필요한 경우에만 로딩하여 불필요한 쿼리가 수행되지 않아, 쿼리 수행 시간을 줄일 수 있다. 대용량 데이터 처리 연관된 엔티티를 무조건 로..