모든 글 202

백준 11726번 2xn 타일링 (java)

[Silver III] 2×n 타일링 - 11726문제 링크성능 요약메모리: 14372 KB, 시간: 104 ms분류다이나믹 프로그래밍제출 일자2024년 9월 3일 01:50:06문제 설명2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.풀이일단 2x1 부터 차례 차례 모든 경우의 수를 그려보았다.일단 적어보고 나니까 N = N-1 + N-2 라는 규칙이 보였다. 그리고 천천히 이유를 생각해보니 N에서 나올 수 있는 경우의 수는 N-1에 세로..

백준 9095번 1, 2, 3 더하기 (java)

[Silver III] 1, 2, 3 더하기 - 9095문제 링크성능 요약메모리: 15852 KB, 시간: 112 ms분류다이나믹 프로그래밍제출 일자2024년 9월 2일 02:39:59문제 설명정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.1+1+1+11+1+21+2+12+1+12+21+33+1정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.출력각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.풀이이 문..

백준 17626번 Four Squares (java)

[Silver III] Four Squares - 17626문제 링크성능 요약메모리: 14548 KB, 시간: 144 ms분류브루트포스 알고리즘, 다이나믹 프로그래밍제출 일자2024년 8월 31일 03:41:43문제 설명라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 12으로 표현할 수도 있다. 역사적으로 암산의 명수들에게 공통적으로 주어지는 문제가 바로 자연수를 넷 혹은 그 이하의 제곱수 합으로 나타내라는 것이었다. 1900년대 초반에 한 암산가가 15663 = 1252 + 62 + 12 + 12라는 해를 구하는데 8초가 걸렸다는 보고가 있다..

백준 2579번 계단 오르기 (java)

[Silver III] 계단 오르기 - 2579문제 링크성능 요약메모리: 14212 KB, 시간: 100 ms분류다이나믹 프로그래밍제출 일자2024년 8월 30일 03:49:22문제 설명계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다.계단 오르는 데는 다음과 같은 규칙이 있다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계..

백준 1010번 다리 놓기 (java)

[Silver V] 다리 놓기 - 1010문제 링크성능 요약메모리: 14748 KB, 시간: 128 ms분류조합론, 다이나믹 프로그래밍, 수학제출 일자2024년 8월 28일 17:28:10문제 설명재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한..

[Querydsl] Querydsl 시작, 기본 세팅

이번에 운영진으로 활동중인 TAVE에서 공식 홈페이지를 만드는 프로젝트에 참여하게 됐다. 지원자들의 서류를 받고 점수를 메기며, 합불을 정하는 것까지 홈페이지에서 관리자 모드로사용 가능하게 기능을 구현하기 위해선, 복잡한 쿼리를 작성할 필요가 있어 보였고 프로젝트에 들어가기 전 복잡한 쿼리와 동적 쿼리에 특화 됐다는 query dsl을 공부할 필요성을 느껴 query dsl 강의를 듣게 됐다. 의존성plugins { id 'java' id 'org.springframework.boot' version '3.3.3' id 'io.spring.dependency-management' version '1.1.6'}group = 'study'version = '0.0.1-SNAPSHOT'java..

백준 11053번 가장 긴 증가하는 부분수열 (java)

[Silver II] 가장 긴 증가하는 부분 수열 - 11053문제 링크성능 요약메모리: 15352 KB, 시간: 124 ms분류다이나믹 프로그래밍제출 일자2024년 8월 27일 17:38:13문제 설명수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)출력첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.풀이LIS 알고..

[JPA] OSIV와 성능 최적화 (Open Session in View란?)

OSIV(Open Session In View) 란?OSIV란 영속성 컨텍스트를 View 영역까지 열어두는 기능이다.즉, View 레이어에서도 지연로딩과 같은 영속성 컨텍스트의 특징을 사용할 수 있다. Spring boot에서 OSIV는 default가 true기 때문에 따로 설정을 바꿔주지 않는 한 항상 실행된다. 데이터베이스 커넥션JPA는 언제 데이터베이스 커넥션을 가져오고 언제 커넥션을 반환할까? JPA에서 영속성 컨텍스트를 사용하기 위해선 당연히 데이터베이스 커넥션을 사용해야한다. 기본적으로 데이터베이스 트랜잭션을 시작할 때 영속성 컨텍스트가 데이터베이스 커넥션을 가져온다.다음과 같이 보통 Service 단에서 트랜잭션이 시작하니 위의 트랜잭션 코드가 실행될 때 데이터베이스 커넥션이 만들어지는 것..

spring/JPA 2024.08.27

백준 18353번 병사 배치하기 (java) (LIS 알고리즘)

[Silver II] 병사 배치하기 - 18353문제 링크성능 요약메모리: 14784 KB, 시간: 144 ms분류다이나믹 프로그래밍, 가장 긴 증가하는 부분 수열: O(n log n)제출 일자2024년 8월 26일 22:32:43문제 설명N명의 병사가 무작위로 나열되어 있다. 각 병사는 특정한 값의 전투력을 보유하고 있으며, 병사를 배치할 때는 전투력이 높은 병사가 앞쪽에 오도록 내림차순으로 배치를 하고자 한다. 다시 말해 앞쪽에 있는 병사의 전투력이 항상 뒤쪽에 있는 병사보다 높아야 한다.또한 배치 과정에서는 특정한 위치에 있는 병사를 열외시키는 방법을 이용한다. 그러면서도 남아있는 병사의 수가 최대가 되도록 하고 싶다.예를 들어, N=7일 때 나열된 병사들의 전투력이 다음과 같다고 가정하자.이 때 ..