일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- taint
- 개성국밥
- 티스토리챌린지
- vfr video
- 달인막창
- pytest
- terminal
- 깡돼후
- k8s #kubernetes #쿠버네티스
- 겨울 부산
- PersistenceContext
- VARCHAR (1)
- mp4fpsmod
- tolerated
- table not found
- Value too long for column
- 코루틴 빌더
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- python
- 오블완
- preemption #
- JanusWebRTCServer
- JanusWebRTCGateway
- kotlin
- JanusWebRTC
- PytestPluginManager
- JanusGateway
- 코루틴 컨텍스트
- Spring Batch
- 자원부족
목록Algorithm/투 포인터 알고리즘(Two Pointers Algorithm) (4)
너와 나의 스토리
문제: programmers.co.kr/learn/challenges?selected_part_id=9317 문제 풀이: Point 1. "응답 완료 시간S는 작년 추석인 2016년 9월 15일만 포함" 즉, 날짜는 크게 신경 쓰지 않아도 된다. Point 2. 각 날짜 및 시간을 ms 단위로 변경하자 = (시간*$60^2$ + 분*60 + 초)*1000 + 소수점 이하 예: 01:00:04.002s -> 3604002ms Point 3. 처리 시작 시간 구하기 입력은 "2016-09-15 01:00:04.001 2.0s" 형태로 주어진다. 먼저 응답 완료 시간(S)을 [Point 2]와 같이 변경한다. 처리 시간(T)도 이와 같이 변경해준다. 이때, 처리 시간의 형태는 다양할 수 있으므로 주의해야 한다..
문제: https://leetcode.com/problems/flip-string-to-monotone-increasing/ 문제 설명: 0과 1로 주어진 문자열이 주어진다. 0 다음 1이 나오는 순서로 만들기 위해 (0을 1로) (1을 0으로) 변환하는 최소 횟수를 리턴하라. 문제 풀이: 0의 개수를 축적해서 기록 -> zero[] 결국 000111 이런식으로 변환되는 것으로 명확한 boundary가 생기게 된다. 모든 위치를 boundary로 잡고, boundary 왼쪽은 0이 되도록, 오른쪽은 1이 되도록 할 때, 바꿔야할 개수를 찾는다. 결과를 저장할 변수(res)를 처음에는 '전부 1인 문자열이 되도록 할 때, flip 수'로 초기화한다. 모든 boundary에서 res=min(res, 왼쪽에 ..
문제: https://www.acmicpc.net/problem/13561 문제 풀이: 투 포인터를 이용하여 문제를 풀 수 있다. O(n)으로 문제를 풀 수 있다. l~r 사이에 포함되는 타입들을 1씩 증가해서 표시한다. -> kind[v[r].second]++; 다 포함됬으면, 제일 먼 두 타입의 위치의 합 나누기 2로 최적의 위치를 구한 후, l++ 시켜가면서 이렇게 범위 줄여도 다 포함되는지 확인한다. 4 7 -6 2 -5 1 -3 1 -2 2 0 3 1 2 2 4 이런 케이스가 있을 수 있기 때문. * 주의: (l+r)/2로 위치를 찾을 때, 두 값의 합이 음수이고 2로 나누어 떨어지지 않는다면 최적의 위치보다 큰 값이 선택된다. 하지만 우리는 최대 거리가 같을 때, 더 작은 값을 출력 해줘야 하..
int sum,arr[9]; int main() { ios::sync_with_stdio(false); cin.tie(NULL), cout.tie(NULL); for (int i = 0; i > arr[i]; sum += arr[i]; } sort(arr, arr + 9); int l=0, r=8; while (l < r) { int t = sum - arr[l] - arr[r]; if (t == 100) { for (int i = 0; i < 9; i++) { if (i == l || i == r) continue; cout