전체 글 146

영속성 컨텍스트

JPA에서 가장 중요한 두가지 1. 객체와 관계형 DB 매핑하기 2. 영속성 컨텍스트 * 엔티티 매니저 팩토리와 엔티티 매니저 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 "엔티티를 영구적으로 저장하는 환경" 이라는 뜻 EntityManager.persist(entity) ; 엔티티매니저를 통해서 영속성 컨텍스트에 접근한다. 엔티티의 생명주기 비영속 ( new) : 영속성 컨텍스트와 전혀 관계없는 새로운 상태 영속 (managed) : 영속성 컨텍스트에서 관리되는 상태 준영속 ( detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) : 삭제된 상태 영속성 컨텍스트의 장점 1차 캐시 동일성(identity) 보장 트랜잭션을 지원하는 쓰기 지연 (transactio..

JPA 소개

JAVA : 객체지향 언어 DB: 관계형 DB ( oracle, MySQL, .. ) -> 객체를 관계형 DB에 관리 -> SQL 중심의 개발 -> 무한 CRUD 반복 패러다임의 불일치 객체 vs 관계형DB *객체와 관계형 DB의 차이 1. 상속 2. 연관관계 - 객체는 참조를 사용 ex. Member.getTeam() - 테이블은 외래키 사용 ex. JOIN ON member.member_id = team.team_id 3. 데이터 타입 - 객체 모델링은 자바컬렉션에서 관리 가능 - 객체를 테이블에 맞추어 모델링/ 테이블에 맞추어 객체를 저장해야 한다. 4. 데이터 식별 방법 -> 객체를 자바 컬렉션애 저장하듯이 DB를 저장할 기술이 필요하다. JPA ( Java Persistence API) : 자바..

[BOJ] 2193: 이친수 / JAVA, DP

https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net N자리일때, 끝자리가 0 인 경우와 (d[N][0]) , 1 인 경우 (d[N][1]) 로 나누어 생각했다. 1) 끝자리가 0 인 경우는 N-1 자리에 끝자리가 0 일 때 뒤에 0 을 붙일 수 있고 N-1 자리에 끝자리가 1일 때 뒤에 0 을 붙일 수 있다. -> d[N][0] = d[N-1][0] + d[N-1][1] 2) 끝자리가 1인 경우는 N-1 자리에 끝자리가 0일때만 뒤에 1..

Algorithm Study 2022.05.05

[BOJ] 11726번: 2*n 타일링

(실버3) https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net d[3] 은 d[2]의 결과값에 2*1 타일을 붙이면 되고, d[1]의 결과값에 1*2 타일을 붙이면 된다. -> 즉, d[3]의 값은 d[2]+ d[1] 값이다. -> d[n]= d[n-2] + d[n-2] 다만, 여기서 주의할 점. 모든값을 정해놓고 마지막에 10007을 나누게 되면 오버플로우가 나므로, d[i] = d[i]%10007 을 바로 해주어야 한다는 것. 또한, int d[] = new int..

Algorithm Study 2022.05.04

[BOJ] 1003: 피보나치함수 / DP, JAVA

(실버3) DP 감 좀 익히려고 푸는 문제들! https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 생각해보니, 2차원 배열로 풀면 더 깔끔하게 풀 수 있다, d[41][2] d[x][0] : 숫자 x의 0의 갯수 d[x][1] : 숫자 x의 1의 갯수 d[0][0]=1 / d[0][1]= 0 d[1][0]=0 / d[1][1]=1

Algorithm Study 2022.05.03

[BOJ] 1463번: 1로 만들기 / JAVA, DP

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net Bottom-up 방식과 Top-down 방식이 있다. 아무래도 생각하면서 풀기에는 Bottom-up 방식이 더 쉬운 것 같다. + 똑같이 풀어도 Top-down은 계속 시간초과가 나는데.. 아직 해결 못함 * dp[N] 의 최솟값은 dp[N-1]+1 / dp[N/3]+1 / dp[N/2]+1 중 최솟값이다. 아래는 Bottom-up 방식,, for문을 통해서 계속해서 나아가는 방식! 아래는 top-down 방식 함수내에서, 재귀처럼 계속 호출하는 것이다. ?????? 왜 시간초과 나냐구???????? 오랜만에..

Algorithm Study 2022.05.03

[BOJ] 2468: 안전영역/ JAVA, DFS

(실버1) https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 1. 장마철에 내리는 비는 0부터 100 까지로 설정 (* 비가 안내리는 경우도 있다고 맨 뒤에 써있음.. 이것때문에 마지막 99%에서 틀렸다고 나와서 한참 찾았다..) 2. check함수는 매번 false 로 초기화 시켜줘야하며, ( * 이중 for문으로 초기화 시켰는데, check= new boolean[N][N] 을 사용해서 초기화하면 더 간단한 코드.) - dfs를 실행시키고, 실행 시..

Algorithm Study 2022.05.02

[BOJ] 3184번 : 양 / JAVA, DFS

https://www.acmicpc.net/problem/3184 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net dfs함수를 호출할 때 마다, 양의 갯수 늑대의 갯수를 초기화 하고 (num_o, num_v) dfs함수 내에서 양의 갯수와 늑대의 갯수를 계산하고 호출이 끝나면 갯수를 비교해서 최종 양의 갯수와 늑대의 갯수를 구한다 (ans_o, ans_v) 1) 양의 갯수 > 늑대의 갯수 : 최종 양의갯수 += 양의 갯수 2) 양의 갯수

Algorithm Study 2022.04.26