일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- boj10942
- boj_15685
- boj7579
- TDD
- react
- onTouchListner
- boj2252
- boj2239
- boj15683
- django
- BFS
- Spring
- DFS
- mysql
- backtracking
- boj15954
- bruteforce
- BOJ
- boj10775
- DynamicProgramming
- DP
- euclideanalgorithm
- 동적계획법
- testdb
- boj15654
- boj_15684
- nestedjson
- springboot
- boj15998
- onTouch
- Today
- Total
목록분류 전체보기 (41)
이마닷의 블로그
spring boot는 기본적으로 TDD 환경을 제공한다. TDD를 성공적으로 수행하기 위해서는 실제 서버가 띄워지는 환경과 test가 이루어지는 환경은 분리되어야 한다. 가장 기본적으로 분리가 필요한 것은 데이터베이스이다. JPA를 활용해 관계형 db를 사용하는 서비스에서 db 환경이 분리되어 있지 않다면, 테스트 도중 발생한 db의 변화가 실제 서비스에까지 영향을 미칠 수 있다. 이러한 분리를 spring boot에서는 별도의 profile을 만들어 관리할 수 있다. 1. application.yml spring: profiles: active: prod include: prod, test jpa: show_sql: true properties: hibernate: dialect: org.hibern..
0. 문제https://www.acmicpc.net/problem/15998 15998번: 카카오머니만약 유효한 최소 충전 단위 M(1 ≤ M ≤ 9 * 1018)이 존재한다면, 첫 번째 줄에 M 을 출력한다. 가능한 값이 여러 가지 있다면, 그중 9 * 1018 이하인 것을 아무거나 하나 출력한다. 존재하지 않는다면www.acmicpc.net 1. 문제분석- 출금하는 금액에 따라 잔액이 음수가 될 때, 음의 값을 갖는 잔액을 양의 값으로 바꾸기 위해서는 최소금액 m을 적어도 1번 이상 채워야 한다. 즉, 잔액이 음수가 되었을 때, 이를 메우기 위해 더해지는 금액들은 모두 공통의 약수를 가지며, 더해지는 금액은 항상 잔액이 최소의 양수 값이 되게 하는 금액이므로 그 약수는 최대공약수가 된다. 따라서 최대..
0. 문제 https://www.acmicpc.net/problem/15954 15954번: 인형들 첫 번째부터 세 번째까지의 인형을 선택하면 표준편차는 2/3의 양의 제곱근이 되고, 이 때 표준편차가 최소가 된다. 두 번째부터 네 번째까지의 인형을 선택하는 경우와, 세 번째부터 다섯 번째 www.acmicpc.net 1. 문제분석 - 주어진 최소 개수 이상의 크기 만큼 순차적으로 표본집합을 만들어 분산 및 표준편차 값을 구하는 비교적 단순한 브루트 포스(Brute Force) 문제이다. 2. 주의할 점 - 값이 double 또는 float으로 이루어지다 보니, 소수점 이하의 값이 처리 도중 잘못 바뀌는 상황에 유의하며 문제를 풀어야 한다. 특히 위 수식 중 두번째 수식처럼 곱하기, 나누기의 연산이 더 ..
0. 문제 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이 www.acmicpc.net 1. 문제분석 - 주어지는 노드들 전부 간의 관계가 주어지지 않고 일부 노드들간의 방향성있는 edge만 주어지면서 이러한 관계를 답으로 나타내야 하므로 위상정렬(topology sort) 문제임을 알 수 있다. 위상정렬은 대학에서의 선수과목을 예시로 들면 가장 이해하기 쉽다. 2. 주의할 점 - 역시나 출력이 잦으므로, StringBuilder를 쓰면 출..
0. 문제 https://www.acmicpc.net/problem/2239 2239번: 스도쿠 스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다 www.acmicpc.net 1. 문제분석 - 특정 위치에 1-9 중 하나의 숫자를 넣을 때에 스도쿠의 모든 조건을 만족하는지 여부를 판단해보아야 하고, 조건을 만족하는지 여부는 이전에 선택했던 결과들(현재 이전의 위치 중 비어있는 자리에 수를 넣은 것)이 영향을 미친다는 점에서 backtracking 방식으로 문제를 풀어야 함을 알 수 있다. - row[i][j], col[i][j], square[i][j]..
0. 문제 https://www.acmicpc.net/problem/10775 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.acmicpc.net 1. 문제분석 - 비행기의 도킹은 가능한 가장 큰 번호의 게이트로 하는 것이 가장 효율적이라는 점과, 각 비행기에 주어진 도킹 가능 최대 게이트 값이 다른 비행기라도, 앞선 비행기들이 하나씩 게이트를 차지함에 따라실제로 도킹할 수 있는 게이트의 최대 번호(루트 노드)는 같아질 수 있다(같은 집합에 속한다)는 점에서 union-find 함수를 이용한 di..
0. 문제 https://www.acmicpc.net/problem/10942 10942번: 팰린드롬? 총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진 순서에 따라서 출력한다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다. www.acmicpc.net 1. 문제분석 - 이전의 상태(현재 문자열에서 양 끝의 문자열을 제외한 사이의 문자열이 팰린드롬인지)에 따라서 현재의 상태를 결정(현재의 문자열이 팰린드롬인지)한다는 점에서 Dynamic Programming을 사용해 문제를 풀어야 함을 알 수 있다. - dp[i][j] : 주어진 문자열 중, i번째 문자부터 j번째 문자까지로 이루어진 부분 문자열이 팰린드롬인지 (boolean) 2. 주의할 점 - 팰린드롬을 판단하는 부분 ..
0. 문제 https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 1. 문제분석 - 기존의 상태(기존에 종료 또는 종료하지 않은 앱으로 인해 획득한 메모리)에 대해서 기존의 상태를 바꿀 수 있는 경우의 수(기존에 종료한 앱 이외에 새로운 앱을 종료하는 것) 중, 그 최댓값(얻을 수 있는 메모리)을 찾아 조건을 만족하는(주어진 목표 메모리 m보다 크거나 같은) dp 값을 찾아 해당 dp의 2차원 인덱스인 비용의 최솟값을 찾는다는 점에서 Knapsack 알고리즘..