분류 전체보기 795

JPA 즉시 로딩 JPA Repository를 쓰면서 실수 안 할 수 있는가?

회사에서 백엔드를 JPA를 통해 개발하였고, 동료분들은 즉시 로딩과 지연 로딩을 자유자재로 사용하고 계셨다. 문제를 발견한 것은 JPA Repository이다. 다음은 엔티티의 코드이다. (설명에 필요한 부분들로 최소한으로 작성하였습니다) Product를 조회할 때 Eager를 통해 variant도 가져오도록 하였다. @Entity @NoArgsConstructor @AllArgsConstructor @Getter public class Product { @Id @Column(name = "product_id") private Long id; @OneToMany(mappedBy = "product" , fetch = FetchType.EAGER) private List variants; private Z..

개발 2024.04.06

백준 1806번 부분합 (JAVA)

https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 저는 투포인트를 통해 문제를 풀었습니다. 투포인트를 통해 해당 포인트 사이의 합을 구하고 이 합이 목표값보다 작으면 앞쪽 포인트를 크다면 뒤쪽 포인트를 늘리면서 목표값이 크면서 인덱스 사이의 값이 작은 것을 찾아 문제를 풀었습니다. package BOJ.twopoint; import java.io.BufferedReader; import java.io.InputStreamReader..

알고리즘 2024.01.19

백준 2023번 신기한 소수 (JAVA)

https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 저는 dfs를 통해 풀었습니다. dfs를 통해 해당하는 자리 수의 모든 수가 문제 조건에 맞는 소수인지를 판단하여 풀었습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ_2023_2 { publ..

카테고리 없음 2024.01.18

백준 1343번 폴리오미노 (JAVA)

https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 저는 DP를 이용하였습니다. 해당 depth부터 연속적으로 .이 몇개 있는지를 판단하여 AAAA 또는 BB를 넣을지를 판단하여 dfs를 통해 모든 경우를 찾았습니다. 이때 중복되는 경우는 다시 계산하지 안도록 하기위해 DP를 이용하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_1343 { public static void main(String[] args) thr..

알고리즘 2024.01.17

백준 2217번 로프 (JAVA)

https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 저는 정렬을 통해 문제를 풀었습니다. 오름차순으로 정렬하여 현재 인덱스보다 뒤에 있는 값은 현재 값보다 크다는 것을 보장하였습니다. 즉, (전체 입력 길이 - 현대 인덱스) * 현재 무게가 현재 로프를 포함한 최대 무게입니다. 이를 바탕으로 인덱스를 점점 줄여나가면서 최대 값을 찾아 문제를 풀었습니다. import java.io.BufferedReader; import java.io.In..

알고리즘 2024.01.15

백준 1758번 알바생 강호 (JAVA)

https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 저는 정렬을 통해 문제를 풀었습니다. 내림차순으로 정렬하여 최대한 빼는 수를 적게 하여 풀었습니다. package BOJ.greedy; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections; public class BOJ_..

알고리즘 2024.01.14

백준 2164번 카드2 (JAVA)

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 저는 자료구조에서 큐를 통해 풀었습니다. 큐를 통해 맨 앞에 것을 꺼내고, 또 맨 앞에 것을 꺼내어 맨 뒤에 넣는 것을 반복하여 최후의 한 장이 무엇인지 찾아 문제를 해결하였습니다. package BOJ.dataStructure; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; ..

알고리즘 2024.01.13

백준 6497번 전력난 (JAVA)

https://www.acmicpc.net/problem/6497 6497번: 전력난 성진이는 한 도시의 시장인데 거지라서 전력난에 끙끙댄다. 그래서 모든 길마다 원래 켜져 있던 가로등 중 일부를 소등하기로 하였다. 길의 가로등을 켜 두면 하루에 길의 미터 수만큼 돈이 들 www.acmicpc.net 저는 크루스칼을 통해 문제를 풀었습니다. MST 방법 중 크루스칼을 통해 MST를 구하였습니다. n과 m의 범위가 같기 때무넹 크루스칼이 더 유리하다 판단하였습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Test { private static class Edge{ int ..

알고리즘 2024.01.12

백준 16398번 행성 연결 (JAVA)

https://www.acmicpc.net/problem/16398 16398번: 행성 연결 홍익 제국의 중심은 행성 T이다. 제국의 황제 윤석이는 행성 T에서 제국을 효과적으로 통치하기 위해서, N개의 행성 간에 플로우를 설치하려고 한다. 두 행성 간에 플로우를 설치하면 제국의 함 www.acmicpc.net 저는 프림을 통해 문제를 해결하였습니다. 프림을 통해 모든 행성을 연결하면서 최소 비용을 구하여 문제를 해결하였습니다. package BOJ.mst; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.PriorityQueue; import java.util...

알고리즘 2024.01.11