일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- terminal
- python
- k8s #kubernetes #쿠버네티스
- table not found
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- PytestPluginManager
- pytest
- VARCHAR (1)
- Value too long for column
- 깡돼후
- preemption #
- vfr video
- 오블완
- 달인막창
- JanusWebRTCGateway
- 자원부족
- PersistenceContext
- 개성국밥
- 티스토리챌린지
- 코루틴 빌더
- 겨울 부산
- JanusGateway
- JanusWebRTCServer
- 코루틴 컨텍스트
- taint
- kotlin
- tolerated
- JanusWebRTC
- mp4fpsmod
- Spring Batch
목록Algorithm/기타 (47)
너와 나의 스토리
문제: https://www.acmicpc.net/problem/12789 소스코드: int n; queue q1; stack st; int main() { ios::sync_with_stdio(false); cin.tie(NULL), cout.tie(NULL); cin >> n; for (int i = 0; i > q; q1.push(q); } int order = 1; while (!q1.empty()) { int cur = q1.front(); if (cur == order) { order++; q1.pop(); } else{ if (!st.empty()&&st.top() == order) { st.pop(); order++; } else { st.push..
문제: https://www.acmicpc.net/problem/12788 소스 코드: int n,team,t,arr[1001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL), cout.tie(NULL); cin >> n>>team>>t; team *= t; for (int i = 0; i > arr[i]; } sort(arr, arr + n,greater()); int tmp=0; for (int i = 0; i = team) { cout
문제: https://www.acmicpc.net/problem/12782 문제 풀이: index 01234567 a: 00110100 b: 10010111 가 주어졌을 때, index 0, 2, 6, 7가 다르며 각각의 b의 값은 1 0 1 1이다. (->one=3, zero=1) 즉, a와 다른 지점이 각각 0과 1이면 서로 바꿔주면된다. 1의 개수와 0의 개수 중 작은 값만큼 swap해주면 됨 -> min(one,zero) 그리고 남은 것들은 0은 1로, 1은 0으로 바꿔주면 됨 -> one+two-min(one,zero)*2 소스코드: int tc; int main() { ios::sync_with_stdio(false); cin.tie(NULL), cout.tie(NULL); cin >> tc;..
문제: https://www.acmicpc.net/problem/17209 문제 풀이: 현재 보는 사람이 새내기라면 그가 지목한 사람들은 헌내기 현재 보는 사람이 헌내기라면 그가 지목한 사람들은 새내기 즉, 항상 반대 이므로 두가지 경우를 다 돌려줄 필요가 없음 dfs를 이용하여 한 사람을 새내기(새내기=1)라고 두고 그가 지목한 사람은 헌내기(헌내기++) 그 헌내기가 지목한 사람은 새내기(새내기++) 해줘서 max(새내기,헌내기)를 결과 값에 더해준다. 소스 코드: int n,res,people[2]; bool visit[2001]; vector adj; void func(int cur,bool old) { if (visit[cur]) return; visit[cur] = true; for (int i..
문제: https://www.acmicpc.net/problem/14891 문제 설명: N극 = 0 / S극 =1 방향 1 = 시계방향으로 회전 / 방향 -1 = 반시계방향으로 회전 4개의 톱니바퀴 중 하나를 돌릴 때, 돌리기 직전의 톱니와 맞닿아 있던 톱니의 극이 다르면 반대로 회전시킨다. 맞닿은 톱니들의 극이 같아질 때까지 돌리기 X, 한번만 돌림 문제 풀이: 톱니가 돌아가는 것은 왼쪽을 가리키는 포인터, 오른쪽을 가리키는 포인터를 만들어서 회전 방향에 따라 +1, -1 해주면 됨 -> 사실 포인터 하나만 있어도 충분한데 헷갈리니까 그냥 두 개 만들었다 ㅎㅎ 포인터가 7일 때, +1해주면 범위를 넘어가므로 %8 해줘야한다. *주의* 반대로 0일 때, -1하는 경우 ( ex) (0-1)%8 ) 하면 -..
int n,cnt; vector v; int main() { ios::sync_with_stdio(false); cin.tie(NULL), cout.tie(NULL); cin >> n; for (int i = 0; i > a >> b; v.push_back({ b,a}); } sort(v.begin(), v.end()); int cur = 0; for (int i = 0; i v[i].second) continue; cur = v[i].first; cnt++; } cout
문제: https://www.acmicpc.net/problem/17070 문제풀이:↘일 때는 ↘,↓, → 다 가능 ↓ 이면 ↘, ↓ 가능→ 이면 ↘, → 가능이렇게 나눠서 dp로 풀면 됨 소스 코드:https://gist.github.com/hovy1994/ce2c82b74e5a341e0c8735a4777db101#file-17070-1
문제: https://www.acmicpc.net/problem/11055 문제 풀이:ex)10 1 100 2 50 60 3 5 6 7 8배열 arr[ ]에 순서대로 1 100 2 50 60 3 5 6 7 8 넣음또 다른 배열 dp[]에 arr[]와 똑같이 초기화 함그 후 해당 위치를 pos라고 할 때pos가 0일 때(인덱스 0) : dp[0]=1pos가 1일 때 : dp[1]=dp[0]+dp[1]=101pos가 2일 때 : dp[2]=dp[0]+dp[2]=3...즉 현재 pos 이전 인덱스들을 확인해서arr값이 본인보다 작으면서 dp값이 현재 자신보다 큰 것들을 찾아 더함 소스 코드: #include #include #include #include #include #include #include #de..