일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백트래킹
- 동적sql
- 연관관계
- querydsl
- FetchType
- 스토어드 프로시저
- 유니크제약조건
- JPQL
- SQL프로그래밍
- 일대다
- 스프링 폼
- 다대일
- 힙
- 즉시로딩
- CHECK OPTION
- execute
- 이진탐색
- BOJ
- 다대다
- PS
- exclusive lock
- dfs
- 비관적락
- 지연로딩
- 데코레이터
- eager
- 낙관적락
- 연결리스트
- shared lock
- fetch
- Today
- Total
목록All (557)
흰 스타렉스에서 내가 내리지
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bJEIR9/btrr9gOMDin/9wtArZbWtiuggSToqTqTwk/img.png)
알아둬야 할 스킬이 두가지가 있었다. M과 N으로 나누어 떨어지는 어떤 수를 구하고자 할 때, for i in range(M*N): if i%M==0 and i%N==0: ... 을 할게 아니라, for i in range(0, M*N, M): if i%N==0:... 이렇게 하면 연산량을 크게 줄일수 있다는 것 그리고 가장 중요한 스킬 내가 원하는 결과 x f(x) 1 1 2 2 3 3 4 4 5 5 6 1 7 2 f(x) = x%5 를 하면 f(5)=0이 된다. x f(x) = x%5 1 1 2 2 3 3 4 4 5 0 6 1 7 2 x 대신 x-1을 함수에 넣고, 리턴 된 값을 1 더해주면 내가 원하는 결과를 얻을 수 있다. x x-1 (x-1)%5 (x-1)%5 + 1 1 0 0 1 2 1 1 2..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ywefb/btrr04QeZPV/dNgp6jVKScBRz79jUK4OT0/img.png)
16926번 배열돌리기1 이랑 문제는 같지만, R의 범위가 아주 크다. 배열을 돌리면 처음상태로 돌아오는 지점이 있을 것이기 때문에, 나머지 연산을 통해 연산 횟수를 줄여주면 된다. 처음엔 deepcopy를 이용해서 구현을 했는데, 2차원 배열을 deepcopy하는것은 시간이 오래걸리는 작업이기 때문에 시간초과가 발생했다. # 시간초과가 발생했던 코드 import copy import sys input = sys.stdin.readline n, m, k = map(int, input().split()) arr = [] for _ in range(n): arr.append(list(map(int, input().split()))) def f(arr, k): start = 0 end_row = n-1 end..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/EYJDr/btrrR7lJTXX/GEeMATLUfOLEiossdn1PVk/img.png)
최대 사이즈만큼 미리 배열을 생성한다. 반복문안에 방문한 점을 표시하기 위해 arr[next]=cnt+1 문을 추가했다. 이미 방문한 점에는 더 짧은 경로로 도달할 수 있는데, 굳이 큐에 추가할 필요가 없기 때문이다. 이렇게 방문한 점을 표시하지 않으면 큐의 길이가 기하급수적으로 늘어나 메모리 초과가 발생한다. from collections import deque n, k = map(int, input().split()) SIZE = 100001 arr = [0] * SIZE arr[n] = -1 def f(): # n==k if n==k: return 0, [] # k < n if k < n: return n-k, [i for i in range(n, k-1, -1)] q = deque() q.appe..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cnXY38/btrrRUNLBu0/nAGQpp011MKmZ9HNgFszv0/img.png)
전형적인 DFS 문제. DFS 감을 잊지 않기 위해서, 다음에 한번 더 풀어보라고 포스트한다 N, M = map(int, input().split()) graph = [[] for _ in range(N)] for _ in range(M): a, b = map(int, input().split()) graph[a].append(b) graph[b].append(a) def dfs(graph, v, arr, visited): if len(arr)==5: return True for w in graph[v]: if w not in visited: ret = dfs(graph, w, arr+[w], visited+[w]) if ret: return True return False def f(): for i i..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/z0gga/btrrJUfdP5s/KQFJOrKWTBBOPADkwZ9Sw1/img.png)
dp[1] = 1 dp[2] = 2 dp[3] = 4 dp[4]: dp[1]에 3이 더해진 경우 dp[2]에 2가 더해진 경우 dp[3]에 1이 더해진 경우 따라서 dp[4] = dp[1] + dp[2] + dp[3] 이를 일반화 하면, dp[n] = dp[n-3] + dp[n-2] + dp[n-1] (if n ≥ 4) dp = [0] * (1000001) dp[1] = 1 dp[2] = 2 dp[3] = 4 for _ in range(int(input())): n = int(input()) if n