일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- kotlin
- 트랜잭션성질
- mysqld.sock
- 레벨로그
- 스프링트랜잭션
- 백준
- 알고리즘
- 자바비동기
- Google Place Photo API
- 코틀린
- 트랜잭션속성
- 무중단배포
- S2139
- GithubOAuth
- 데이터베이스락
- subprocess에러
- tomcat설정
- jsp프로젝트
- KotlinInAction
- 우아한테크코스
- 코틀린뽀개기
- 코틀린기초
- DynamicWebProject
- 테코톡
- servlet프로젝트
- ObjectCalisthenics
- 객체지향생활체조
- 리버스프록시
- java
- 트랜잭션
- Today
- Total
목록분류 전체보기 (80)
초이로그
너무 복잡한 구현이었던 벽돌깨기!!! 스터디 문제였는데 당시에는 못풀고 드디어 풀었다!!! 1. makeSet(): 구슬을 떨어뜨리는 경우(N)만큼 선택할 수 있는 열의 경우의 수를 생성한다 (예제 1처럼 N=3, W=10인 경우, 10*10*10의 경우의 수를 생성) 1-1. copyArray(): 경우의 수마다 구슬을 쏴 테스트 하기 위해 주어진 벽돌 정보 배열을 복사한다 1-2. 생성된 경우의 수(N)대로 구슬을 쏜다. 1-2-1. findH(): 선택된 열의 가장 최상단 벽돌의 가로측 위치를 구한다.(즉 좌표 정보 획득!) 만약 해당 열에 벽돌이 없으면 continue; 1-2-2. shootMarvel(): 해당 좌표로 구슬을 쏜다. bfs를 이용하여 벽돌정보만큼 상하좌우로 터뜨린다. 1-2-2..
배열의 연속합 중 최대를 구하는 문제이다. Dynamic Programming 방식으로 접근해서 풀었다. DP배열을 생성하여 i를 끝으로 하는 부분 합 중 최댓값을 저장하도록 하였다. 즉, DP[i]는 i번째 원소를 포함하는 최대 연속 부분합이다. 따라서 dp 배열의 최댓값을 결과로 리턴하면 된다! 참고로 dp[i] = Math.max(dp[i - 1] + arr[i], arr[i]); 이렇게 식을 만들었는데 음수값이 아닌 경우만 확인해줘도 되므로 dp[i] = Math.max(dp[i - 1], 0) + arr[i]; 이렇게도 가능하다. 그나저나 이 문제는 BufferedReader를 사용하면 안되고 Scanner를 사용해야만 메모리 초과가 나지 않는다. (데이터에 공백이 잘못 설정되었다는 소문이 있습..

Intellij 2020.3.2 버전 기준 (Ultimate긴하지만 Community에서도 가능) 인텔리제에서 이클립스와 같은 Dynamic Web Project를 생성하는 방법이다. 프로젝트 생성까지는 다른 블로그 글과 비슷한데 난 servlet생성하기랑, @WebServlet에서 계속 오류가 나서 새롭게 정리 1. 프로젝트 생성하기 Intellij를 실행시키고 New Project로 새로운 프로젝트를 생성한다 그냥 아무것도 선택하지말고 (SDK만 설정) Next (참고로 Intellij 공식 문서에서는 Ultimate 기준으로 Java Enterprise에서 Web Project를 생성하라고 한다. 이러면 maven 기반으로 자동 생성되기 때문에 이클립스의 Dynamic Web Project과 달리 ..
이전에 이미 내리막길(1520)을 풀었더니 쉽게 풀 수 있었다. 시간 초과 방지를 위해서 DFS + DP 로 푸는 문제였다. DFS을 통해 각 위치마다 판다의 최장 수명을 저장한다. 이때 visited 배열(DP배열)을 이용하여 이미 방문한적이 있는 경우, 해당 칸에서의 최장 수명을 반환함으로써 시간을 단축해주었다. github.com/SuyeonChoi/Algorithms/blob/master/BaekJoon/Java/Simulation/p1937.java SuyeonChoi/Algorithms Personal Algorithm Study::solving BOJ, Programmers, and SW Expert Academy - SuyeonChoi/Algorithms github.com

작년엔 보고 헉 하고 넘겼던 문제 오늘도 보고 헉 하긴 함;; BFS ver. while (! queue.isEmpty()){ myPoint cur = queue.poll(); if(cur.x == cvs[N][0] && cur.y == cvs[N][1]) { isHappy = true; break; } for(int i = 0; i < N+1; i++){ int dist = calcDist(cur.x, cur.y, cvs[i][0], cvs[i][1]); if(!vis[i] && dist

1. DP 1부터 시작해서 N까지 배열을 채워나갔다. 이전 배열의 값(즉 1만큼 작은 값) + 1로 현재 i번째 값을 채우고 2또는 3으로 나누어 덜어지는 경우 i/2 또는 i/3 인덱스의 값과 비교해서 더 작은 값으로 업데이트했다. 나머지 두개의 경우는 숫자 N부터 시작했다. 2. BFS visited배열과 큐를 사용해서 3으로 나누었을때, 2로 나누었을때, 1을 뺐을때 0보다 크고 가능한 경우를 완전탐색하는 방식으로 해결 3. DFS 큐대신 재귀를 사용하였다. 재귀함수의 매개변수로 깊이를 줘서 가지치기를 해야 시간초과가 나지 않는다. 위에서부터 dfs, bfs, dp로 푼 결과 dp로 풀었을때가 제일 빠르게 나올줄 알았는데 bfs로 푼게 더 빨리 통과되었다.