전체 글 681

[PS] BOJ2042 구간 합 구하기 ( prefixSum ) With JAVA, Python

https://www.acmicpc.net/problem/2042 2042번: 구간 합 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 합을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net ◎문제풀이 [Alogorithm] 세그먼트 트리( Segment Tree ) 구간합 구하기 ( + BOJ2042 ) With Python,JAVA [Alogorithm] 세그먼트 트리 ( Segment Tree ) 프로그래밍 분야에서는 시간-공간 트레이드-오프(Trade-off) 현상이 자주 일어난다. 처리시간을 줄이면 처리공간이 늘어나고..

문제풀이 2023.07.11

[PS] BOJ1707 이분그래프 ( graph ) with Python

https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net ◎ 문제풀이 https://lordofkangs.tistory.com/408 [Algorithm] 이분그래프(Bipartite Graph) ( + BOJ1707 ) 이분 그래프(Bipartite Graph)란, 서로 다른 두 집합의 노드 간 연결로 이루어진 그래프이다. 같은 집합의 노드 사이에는 간선이 존재하지 않는다. 예를 들어, 사람-취미 관계를 나타내는 그래프라고 lordofkangs.tis..

문제풀이 2023.07.11

[SpringDataJPA] @Query

[SpringDataJPA] 메소드 이름으로 쿼리생성하기https://lordofkangs.tistory.com/430 [JPA] SpringDataJPA란? Spring Data란? Spring Data란, Spring 프레임워크가 제공하는 추상화된 데이터 접근 기술이다. 데이터베이스나 ORM프레임워크의 종류에 따라 데이터접근방lordofkangs.tistory.com 지난 포스팅에서 메소드 이름으로 쿼리를 생성해보았다. 메소드 이름만으로 모든 쿼리를 커버할 수 없다. 복잡하고 자세한 쿼리를 생성하려면 직접 JPQL을 작성해야 한다. 그러나 스프링데이터JPA는 개발자가 직접 리포지토리 구현체를 작성하지 않고 SpringDataJPA가 구현체를 프록시 객체로 생성하여 제공한다. 그러므로 개발자는 스프링데..

Dev/JPA 2023.07.11

[SpringDataJPA] 메소드 이름으로 쿼리생성하기

[JPA] SpringDataJPA란? Spring Data란? Spring Data란, Spring 프레임워크가 제공하는 추상화된 데이터 접근 기술이다. 데이터베이스나 ORM프레임워크의 종류에 따라 데이터접근방식은 다양하게 구현되지만... 사실, 기능은 거 lordofkangs.tistory.com 지난 포스팅에서 SpringDataJPA의 개념을 다루어 보았다. SpringDataJPA는 데이터엑세스 계층의 핵심로직인 Repository를 자동생성하여 제공하는 모듈이다. Repository는 CRUD를 구현하기 위한 모듈로, 여러 Repository는 로직이 서로 중복되는 경우가 많다. 그래서 SpringDataJPA는 공통된 기능을 모아 JpaRepository 인터페이스와 SimpleJpaRepo..

Dev/JPA 2023.07.11

[PS] BOJ1285 동전뒤집기 ( BitMasking ) With JAVA

https://www.acmicpc.net/problem/1285 1285번: 동전 뒤집기 첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위 www.acmicpc.net ◎ 문제풀이 [백준(BOJ)] #1285- 동전 뒤집기 (파이썬, PyPy3) 문제 https://www.acmicpc.net/problem/1285 1285번: 동전 뒤집기 첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전 c4u-rdav.tistory.com ( 여러 포스팅을 찾아 보았는데 위 ..

문제풀이 2023.07.11

[PS] BOJ1149 RGB거리 ( DP ) With Java

1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net ◎ 문제풀이 처음에 문제를 잘못 접근하여 푸는데 시간이 걸렸다. 이웃한 집과 같은 색상이면 안 되고 비용을 최소로 하는 문제이다. 그래서 정말 단순하게 생각했다. dp[n]이 n번째 집까지 색칠하는데 걸리는 최소비용이라면, 이는 dp[n-1]에서 이웃하지 않는 색상 중 최솟값을 더하면 구할 수 있다고 생각했다. ( 그리디 관점으로 생각했다. ) 그러나 이런 생각은 모든 경우를 고려하지 않은 풀이이다. 이번 문제는 최적해를 구하는 문제가 아니..

문제풀이 2023.07.10

[SpringDataJPA] SpringDataJPA란?

Spring Data란? Spring Data란, Spring 프레임워크가 제공하는 추상화된 데이터 접근 기술이다. 데이터베이스나 ORM프레임워크의 종류에 따라 데이터접근방식은 다양하게 구현되지만... 사실, 기능은 거의 동일하다. 데이터를 CRUD하고 페이징 및 정렬과 같이, 기능은 동일하지만 In-Memeory DB이냐 Non-Relational DB이냐 Relational DB이냐 Cloud 기반이냐 혹은 JPA framework이냐 Map-Reduce Framework이냐에 따라 구체적인 구현만 다를뿐이다. 그래서 구체적인 구현은 구현체로 넘기고 기능은 인터페이스로 추상화한 모듈을 스프링이 제공하는데, 그것이 Spring Data이다. Spring Data를 활용하면, 데이터 엑세스 환경이 다르더..

Dev/JPA 2023.07.06

[Algorithm] Lazy Propagation( 지연전파 ) ( + BOJ10999 ) With JAVA

https://lordofkangs.tistory.com/411 [Alogorithm] 세그먼트 트리( Segment Tree ) 구간합 구하기 ( + BOJ2042 ) With Python,JAVA[Alogorithm] 세그먼트 트리 ( Segment Tree ) 프로그래밍 분야에서는 시간-공간 트레이드-오프(Trade-off) 현상이 자주 일어난다. 처리시간을 줄이면 처리공간이 늘어나고 처리공간이 줄어들면 처리시간lordofkangs.tistory.com 지난 포스팅에서 세그먼트 트리로 구간합을 O(logN) 시간복잡도로 구해보았다. 수열의 변경이 자주 일어나지 않는다면 메모리를 적게 차지하는 배열이 좋지만 변경이 자주 일어난다면 처리속도가 빠른 세그먼트 트리를 구성하는 것이 좋다. (트레이드-오프)..

[PS] BOJ2225 합분해 ( dp ) With python

https://www.acmicpc.net/problem/2225 2225번: 합분해첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.www.acmicpc.net  ◎ 문제풀이 합해야 하는 K가 정해져 있어 어려운 문제였다.    5가 되는 경우는 6가지가 있다. 0에 +5를 하는 경우1에 +4를 하는 경우2에 +3을 하는 경우3에 +2를 하는 경우4에 +1을 하는 경우5에 +0을 하는 경우 k는 3이므로,+0,+1,+2,+3,+4,+5은 2개의 합으로 구성되어야 한다. 이를 점화식으로 표현하면 아래와 같다. dp[5][3] = dp[0][2] + dp[1][2] + dp[2][2] + dp[3][2] + dp[4][2] + dp[5][2] dp[n][k] = dp[0][k-1] + d..

문제풀이 2023.07.06

[PS] BOJ2178 미로탐색 ( BFS ) With 파이썬

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net ◎ 문제풀이 가중치 없는 그래프에서 최단거리를 구하는 문제는 BFS로 푼다. DFS는 깊이우선탐색으로 최악의 경우를 먼저 탐색할 가능성이 있어서 처리시간이 오래 걸린다. 넓이 우선 탐색으로 해야 최악의 경우를 사전에 방지할 수 있다. ◎ 코드 Python #BOJ2178 미로탐색 (bfs) import sys from collections import deque input = sys.stdin.readline n,m = map(..

문제풀이 2023.07.05