일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JSONObject 분할
- git stage
- jar 소스보기
- JSON 분할
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
- 스프링 배치 메타 테이블
- JSONArray 분할
- Meta Table
- 성능개선
- 마이바티스 트랜잭션
- date_format
- batchInsert
- 스프링 리액티브 프로그래밍
- 스테이지에 올리기
- 문자형을 날짜형으로
- 스프링 웹플럭스
- JSON 분리
- 폐기하기
- str_to_date
- org.json
- JobExecutionAlreadyRunningException
- spring webflux
- JSON 분해
- 날짜형을 문자형으로
- nonblocking
- spring reactive programming
- 무시하기
- multi update
- 마리아디비
- 스프링 배치 공식문서
- Today
- Total
목록ALGORITHM STUDY WITH PYTHON/Binary Search (7)
ebson
1. 첫번째 배열에서 가능한 모든 부분배열의 합을 N_sums 리스트에 저장한다. 2. 두번째 배열에서 가능한 모든 부분배열의 합을 M_sums 리스트에 저장한다. 3. 첫번째 배열의 모든 요소를 순회하면서 아래 3.1.-3.3 을 반복한다. 3.1. M_sums에서 bisect_right으로 T-첫번째 배열의 요소 값을 탐색한 인덱스를 r에 저장한다. 3.2. M_sums에서 bisect_left으로 T-첫번째 배열의 요소 값을 탐색한 인덱스를 l에 저장한다. 3.3. r-l을 cnt변수에 증감한다. 4. 모든 가능한 경우의 수 cnt를 출력한다. T = int(input()) N = int(input()) N_list = list(map(int, input().split())) M = int(inpu..
1. 주어진 중량값 중 최소, 최대값을 저장 2. 1번의 최소, 최대 중량값을 lo, hi에 저장하고 중간값을 mid에 저장한다. mid를 최소무게제한으로 하여 아래 이분탐색 3-5를 반복한다. 3. 최소무게제한을 통과하는 노드만 방문하도록 하여 시작점에서 끝점까지 이동가능한지 여부를 반환하는 bfs를 아래와 같이 실행한다. 3.1. 최소무게제한을 인자로 받고 deque에 시작점을 저장한다. 3.2. 방문체크배열을 노드개수 + 1개 만큼 False으로 초기화하고 시작점을 True로 갱신한다. 3.3. deque에 요소가 없을 때까지 아래를 반복한다. 3.3.1. deque에서 맨 왼쪽 요소를 꺼낸다. 3.3.2. 맨 왼쪽요소에서 갈 수 있는 노드와 그 중량값에 대해 만약 방문하지 않은 노드이고 중량값이 ..
1. lo를 0, hi를 기타 레슨 시간 목록 lectures의 총합으로 초기화한다. 2. 출력할 변수 ans에는 hi를 저장한다. 3. lo가 hi이하이면 아래 4-9를 반복한다. 4. mid에 (lo+hi)//2를 저장한다. 5. mid가 lectures 요소 중 최대값보다 작으면, lo를 mid+1으로 저장하고 다음 반복으로 넘어간다. 6. sub를 0, sub_cnt를 1으로 초기화하고 lectures를 순회하면서 아래 6.1-6.2를 반복한다. 6.1. sub에 lectures의 요소를 더한 값이 mid 이하이면 sub에 lectures의 요소를 더한다. 6.2. 만약 mid보다 크다면 sub_cnt에 1을 더하고 sub에는 lectures의 요소를 저장한다. 7. sub_cnt가 M(블루레이의..
1. lo를 0, hi를 k으로 초기화한다. 2. lo가 hi보다 작거나 같으면 아래 3-6을 반복한다. 3. mid 를 (lo+hi)//2 으로 초기화한다. 4. 1부터 N까지 반복하면서 mid//i와 N중 작은 값을 cnt에 더하기함으로서 mid보다 작거나 같은 수의 개수를 구한다. 5. mid보다 작거나 같은 수의 개수 cnt가 k와 같거나 더 크면, hi를 mid-1으로 갱신하고 ans변수에 mid를 저장한다. 6. cnt가 k보다 작으면, lo를 mid+1으로 갱신한다. 7. ans를 출력한다. N = int(input()) k = int(input()) lo = 0 hi = k while lo = k: hi = mid-1 ans = mid else: lo = mid+1 print(ans) 모든..
1. p1, p2에 각각 0과 정수 배열의 길이-1을 저장한다. 2. ans 변수에 정수배열에서 p1, p2 인덱스의 두 값을 저장한다. 3. 정수배열의 p1, p2 인덱스의 두 값을 더한 값을 tot 변수에 저장한다. 4. tot의 절댓값을 min_tot에 저장한다. 5. p1 이 p2보다 작으면 아래 6-10을 반복한다. 6. 정수배열의 p1, p2 인덱스의 두 값을 더한 값의 절댓값이 min_tot보다 작으면 ans의 0, 1번 인덱스의 값을 정수배열의 p1, p2인덱스의 값으로 갱신한다. 7. min_tot 값을 저장한다. 8. tot 값을 저장한다. 9. tot 값이 음수이면 p1을 1 증감하고 tot 값이 양수이면 p2값을 1 감소한다. 10. tot 값이 0이면 반복문을 빠져나온다. 11. ..
1. LIS(Longest Increasing Subsequence) 배열에 원본 수 배열 A의 첫번째 요소를 추가한다. 2. 원본 수 배열 A를 마지막 요소까지 순회하면서 아래 3-4를 반복한다. 3. LIS의 마지막으로 추가된 요소보다 원본 수 배열 A의 요소 a가 더 크면 LIS에 추가한다. 4. LIS의 마지막으로 추가된 요소보다 원본 수 배열 A의 요소 a가 더 작거나 같으면 LIS에서 왼쪽부터 순회하면서 a와 같거나 더 큰 숫자가 있는 첫번째 index에 a를 저장한다 5. LIS의 길이를 출력한다 N = int(input()) A = list(map(int, input().split())) LIS = [] LIS.append(A[0]) from bisect import bisect_left ..
1. 집 좌표 리스트를 정렬한다. 2. 집들에 대한 최소거리(1), 최대거리(첫번째 집에서 마지막집까지 거리) 를 구한다. 3. 최소 거리가 최대거리보다 작거나 같으면 아래 4-7을 반복한다. 4. 최소 거리와 최대 거리의 중간값을 계산하고 첫번째 집에 공유기를 설치한다. 5. 집 좌표 목록을 순회하면서 현재 공유기 설치한 집 + 중간값 이상의 좌표에 있으면 공유기를 설치하고 카운트를 1 증감한다. 6. 공유기 개수 이상으로 설치되었으면 거리를 넓힌다. (최소거리 = 중간값+1) result에 중간값를 저장한다. 7. 공유기 개수보다 적게 설치되었으면 거리를 좁힌다. (최대거리 = 중간값-1) 8. result를 출력한다. N, C = map(int, input().split()) homes = [int..