boj 1939 : 중량제한 https://www.acmicpc.net/problem/1939 DFS+메모이제이션으로 어떻게 풀 수 있을지 고민하다가그냥 BFS로 풀어제꼈다.일반적인 BFS로 해결 가능하다. current번째 노드까지의 최대 무게를 flow[current]라 하면, current노드와 연결된 next 노드의 의 값, nextCost는 min(flow[current],edge(current,next) )이다. 최종적으로 초기화된 flow[next]값보다 nextcost값이 작다면 next와 nextcost의 쌍을 queue에 넣어준다.최종적으로 queue가 빌 때까지 반복하면 각각 노드까지의 최대값을 구할 수 있다.
boj 1700 : 멀티탭 스케쥴링 가장 나중에 쓰이는 플러그를 뽑아주면 된다.직관적으론 이해되는데 어떻게 증명할 수 있을까?... stl map을 이용하여 nlogk로 해결하였지만 코드의 갯수 최대 100, 가전기기 갯수 최대 100이어서 티는 안나는듯 ㅜㅜ map사용 시 map.size()에 뭔가 문제가 있는 듯 하다.설마 stl에 버그가 있겠어? 라는 생각에 한참을 디버깅한듯 ㅜㅜㅜsize를 직접 구현하면 가볍게 AC지만 map.size()를 이용하면 size가 바로바로 초기화가 안돼서 다른 값을 내는듯. 아마 iterator와 함께 써주면 문제가 생기는 버그가 있는 것 같다.기억해둬야할듯!
boj 2696 : Running Median https://www.acmicpc.net/problem/2696 총 3가지 방법으로 해보았다. 첫번째 : 가장 단순한 방법으로 sorting + 중간값 출력...n * n * logn역시나 시간초과 ㅎㅎ 두번째 :selection 알고리즘.예전에 코드를 직접 짜보았었던게 생각나서 해보았다.첫번째 방법이 n * n * logn 이라면 이방법은 n * n만에 가능.직접 짜는것보다 nth_element를 이용..ㅎㅎㅎ 44ms로 AC 세번째 : left, right 2개의 힙 이용.a[i]가 mid보다 클 경우 right에 push, 작거나 같은경우 left에 push.(작거나 같을 경우나 크거나 같을 경우는 따로 고려해주지 않아도 된다.)홀수번째마다 3가지 경..
boj 2698 : Adjacent Bit Counts https://www.acmicpc.net/problem/2698 생각한 시간은 길었지만 점화식은 간단하게 나온다. 1. A[n][k][e] : e로 끝나고 k개의 인접비트를 가지는 길이 n인 string의 수2. A[1][0][0] = 1, A[1][0][1] = 13-1. A[n][k][0] = A[n - 1][k][1] + A[n - 1][k][0]3-2. A[n][k][1] = A[n - 1][k][0] + A[n - 1][k - 1][1]
boj 2487 : 섞기 수열 https://www.acmicpc.net/problem/2487 각 cycle 길이의 lcm을 출력해주면 된다.예를들어 섞기수열이 3 2 5 6 1 4인 경우cycle(1) = 3 (1->3->5->1),cycle(2) = 1 (2->2)cycle(3) = 3cycle(4) = 2 (4->6->4)cycle(5) = 3cycle(6) = 2이므로 lcm(cycle(1),cycle(2), ..., cycle(6))인 6을 출력해주면 정답.각각 숫자에 대한 cycle 수를 구하는 것 보단 1의 cycle을 구하고 cycle의 경로에 있는 1,3,5의 cycle 수도 모두 같은 값으로 해주면 훨씬 빠르다.
boj 10835 : 카드게임 이것도 간단한 DP문제. a : 왼쪽카드뭉치 수열b : 오른쪽 카드뭉치 수열f(i, j) : 왼쪽 i번째, 오른쪽 j번째 카드일 때의 앞으로 얻을 수 있는 최대값이렇게 두면. 1. f(i, j) = max( f(i + 1, j + 1), f(i + 1, j), f(i, j + 1) + b[j])1.1 f(i + 1, j + 1) : 카드를 둘다 버릴 때1.2 f(i + 1, j) : 왼쪽 뭉치만 버릴 때1.3 f(i, j + 1) + b[j] : 오른쪽 뭉치만 버릴 때(이때는 왼쪽 카드보다 오른쪽 카드 값이 작아야함)
boj 2302 : 극장 좌석 쉬운 DP문제. 쉬운 DP는 그만 풀어도 되는데 손이 자꾸 가네... f(i) : vip가 없을 때 i번까지 자리를 바꿀 수 있는 경우의 수이렇게 두면1. i = 2 일 때 : f(i) = f(i - 1) + f(i - 2)2.1 f(i - 1) : i가 가만히 있는 경우2.2 f(i - 2) : i가 자리를 바꾸는 경우 vector에 0, vip1, vip2, ... vipM, N + 1을 담은 후결과값은 f(N + 1 - vipM) * ... f(vip2 - vip1) * f(vip1) 을 출력.
- Total
- Today
- Yesterday
- 알고리즘
- BOJ
- 연습문제
- 백준 부분합
- boj 앱
- 백준 1647
- SCPC 2016
- scpc
- 10159
- boj 7579
- boj 1799
- 도시 분할 계획
- 백준
- 문제 풀이
- 백준 도시 분할 계획
- 네블컵 2회
- 백준 2467 용액
- 백준 1799
- 백준 1806
- 백준알고리즘
- 풀이
- dp
- 2469
- 백준 7579 앱
- 백준 비숍
- boj 1806
- 백준 앱
- boj 용액
- codeground
- 백준 용액
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |