일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 낙관적락
- 백트래킹
- 다대다
- 이진탐색
- 데코레이터
- 연결리스트
- 스토어드 프로시저
- JPQL
- PS
- 스프링 폼
- 연관관계
- eager
- FetchType
- 일대다
- querydsl
- 유니크제약조건
- 다대일
- 즉시로딩
- 동적sql
- 지연로딩
- fetch
- 힙
- BOJ
- execute
- shared lock
- SQL프로그래밍
- 비관적락
- dfs
- exclusive lock
- CHECK OPTION
- Today
- Total
목록전체 글 (556)
흰 스타렉스에서 내가 내리지
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ciG9EJ/btsDHrGuDoX/SSfWPnZkqkOKPckMN57uv1/img.jpg)
# 큰 그림 클라이언트 → Apache Tomcat (:8080) → Spring Framework → 시큐리티 필터 → Dispatcher Servlet → Controller → Service → Repository → Persistence Context ←→ DB * Dispatcher Servlet은 doPost, doDelete, doPut 등 서블릿의 생명주기를 가지고 있다. 주소를 파싱해서 컨트롤러를 찾아주는 역할을 한다. * @RestControlloerAdvice가 Dispatcher Servlet 단에서부터의 예외처리와 응답을 모두 책임진다. # 작은 그림 # 1. 인증 필터 1. UsernamePasswordAuthenticationFilter (이하 JwtAuthenticationF..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/S5mxY/btsDKLiQa0K/vfjvANETGXhVg5KF2WPl2K/img.png)
https://www.acmicpc.net/problem/9935 주어질 문자열의 길이를 N, 폭발 문자열의 길이를 M이라고 하자. 가장 먼저 무식하게 하는 방법은 아래와 같다. # 1. 무식한 방법 string = input() s = input() length = len(s) while True: if s in string: index = string.index(s) string = string[:index] + string[index+length:] else: break print(string if string else "FLURA") python에서 문자열 슬라이싱의 시간 복잡도는 O(K) where K is length of the slice. 이라는 코드는,..
# 배낭 문제 - n개의 물건과 배낭이 있고, 각 물건에 대해 가치와 무게가 알려져 있다. - 배낭의 최대 용량을 초과하지 않으면서 배낭에 담을 수 있는 최대 가치는? - 배낭문제는 물건을 쪼갤 수 있는 Fraction Knapsack Problem과 물건을 쪼갤 수 없는 0-1 KnapSack Problem이 있다. - 배낭문제는 대표적인 DP 문제이다. https://www.acmicpc.net/problem/12865 N, K = map(int, input().split()) weight = [0] value = [0] for _ in range(N): w, v = map(int, input().split()) weight.append(w) value.append(v) t = [[0]*(K+1) f..
https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net n = int(input()) arr = list(map(int, input().split())) dp = [1] * n for i in range(1, n): for j in range(i): if arr[j] = dp[i]: dp[i] = dp[j] + 1 print(max(dp)..
# 백트래킹 - 현재 상태에서 다음 상태로 가는 모든 경우의 수를 찾아서, 이 경우가 답이 될 수 없으면 그 노드의 이전(부모)로 돌아간다. - 구현을 하면 재귀 형태가 된다. - 재귀 함수는 탈출 조건이 필요한데, 탈출 조건은 해를 만족하였을 때로 하면 된다. # 백트래킹의 포맷 def backtrack(candidate): # 만약 현재 후보군이 유효한 해라면 정답 처리하고 backtrack 함수를 종료 if find_solution(candidate): output(candidate) return # 반복문을 돌면서 가능한 모든 후보군에 대해 탐색 for next_candidate in list_of_candidates: # 유효한 후보군인 경우에만 탐색 진행 if is_valid(next_cand..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/DSSp2/btsDAsRf7OQ/bPjsPgloK8RIqq2b51x7D0/img.png)
https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net n = int(input()) next_move = list(map(int, input().split())) arr = [i for i in range(n)] now = 0 res = [] for _ in range(n): p = arr.pop(now) res.append(p+1) if _ == n-1: break move = next_move[p] if move > 0: now..
import statistics as st arr = [int(input()) for _ in range(5)] arr.sort() print(st.mean(arr)) print(st.median(arr)) # 평균 statistics.mean(arr) * float 평균 statistics.fmean(arr) # 중간값 statistics.median(arr) - 배열 길이가 홀수이면 가운데 데이터 포인트가 반환되지만, 짝수일 경우 중앙값 두개의 평균을 취한다. median([1, 3, 5]) # 3 median([1, 3, 5, 7]) #4.0 - 따라서, 데이터 길이가 짝수일 경우, 아래의 함수를 이용한다. 1. statistics.median_low(arr) 2. statistics.median_..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/7Ssru/btsDiOfOlNE/kekE5k0abADnjvcOyI2I1k/img.png)
# Trie 란? - 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조다. - 검색할 때의 자동완성 기능, 사전 검색 등 문자열을 탐색하는 데 특화되어 있는 자료구조이다. - retrieval tree 가 어원이며, radix tree, prefix tree 라고도 불린다. # 장단점 - 문자열 검색을 빠르게 한다. - 문자열 탐색을 할 때, 전부 비교하는 것보다 시간복잡도 측면에서 훨씬 더 효율적이다. - 각 노드에서 자식들에 대한 포인터들을 모두 저장하고 있다는 점에서, 메모리 측면에서는 비효율적이다. # 예제 1. 'abc' 에 삽입 초기에 트라이 자료구조 내에는 아무것도 없으므로 Head의 자식노드에 'a'를 추가해준다. 'a' 노드에도 현재 자식이 하나도 없으므로, 'a'의 자식노..
# LC - 파트 2 - 제대로 못 들었을 경우 찍기 - He, She, They 가 나오면 오답일 가능성이 높다. 받아 줄게 없으니까 - 동일어휘 / 연상어휘 / 유사발음 제껴 → A or B 중 선택하는 선택의문문은 예외! - '모른다' 라는 뉘앙스는 정답일 가능성이 높다. - 되묻거나 말대꾸하는 보기가 정답이 될 확률이 높다 - 그래도 모르겠다 하면 과감하게 찍어라. 소탐대실하지 말라 # 파트 5 - 8분 - 문법 문제에서는 해석하지 마라 - 풀리지 않는 문제에서 계속 고민하지말고 우선 별표치고 넘어가라. 5분봐도 못 푼다 - 접속사 나오면, 앞에 읽을 필요가 없지. # 파트 6 - 독해를 하면서 풀어야 한다. - 전 문장만 보고, 보기로 바로 내려오라. - 전 문장의 키워드가 정답에서 반복될 가능..
# 1. 만약 q 가 deque 일 경우 # 만약 q가 deque 일 경우 while q: q 가 일반 큐일 경우, 시작점을 q와 visited에 먼저 채워 넣는다. while문을 시작하고, for 문 전까지 원하는 로직만 작성한다. 다음으로 이동할 수 있는 칸에 대하여 for문을 수행하는데, 이 때는 방문하지 않은 점들만 탐색하고, q에 추가하자마자 방문 처리를 해준다. 이는 가중치는 없고 오로지 먼저 도착하면 장땡인 문제에 적용된다. # 2. 만약 q가 heapq 일 경우 # 만약 q가 heapq일 경우 while q: 먼저 도착한다고 되는게 아니라, 가중치가 있어서 이에 따른 우선순위가 존재할 때 적용할 수 있는 문제다. 일반 ..