2024-03-23
-초콜릿 자르기(2163, 백준) 몇번 직접 그리다보면 규칙을 찾을 수 있다. 항상 N*M의 초콜릿을 1*1로 잘라야 한다. 이때 필요한 초콜릿 조각의 수는 N*M개이고, 한번 자를때마다 초콜릿의 조각은 항상 1개씩 늘어나게 됨으로, 답은 N*M-1개가 된다. 입력되는 수의 범위가 큼으로 자료형에 주의하자. 더보기 #include int main() { long long i, j, n, m; scanf("%lld %lld", &n, &m); printf("%lld", (m * n)-1); return 0; } -서울에서 경산까지(14863, 백준) queue를 이용해 최단경로 구하는 것 처럼 접근을 했지만 생각해보니 Dp를 어렵게 푼것에 불과했다. Dis[현재노드][현재까지 걸린 시간] 일때의 최대 모금..
2024-03-20
-가운데를 말해요(1655, 백준) 우선순위 큐를 이용한 아이디어성 문제라고 생각한다. mid를 기준으로한 우선순위 큐 두개를 잡아 준 뒤, mid를 기준으로 mid보다 작은 수는 minq에, 큰 수 는 maxq에 넣어준 뒤, minq는 가장 높은수가 위에, maxq는 가장 낮은수가 위에 오게끔해서, 만약 계산후, mid값이 바뀌어야 한다면 균형이 맞게 바꾸어준다. 더보기 #include #include #include using namespace std; int main() { int i, j; int n, mid; priority_queue low, high; scanf("%d %d", &n, &mid); printf("%d\n", mid); for(i=2;i mid) high.push(-x); el..
2024-03-16
-아기 상어(16236, 백준) BFS를 이용한 구현 문제이다. n범위가 크지 않음으로, 물고기를 잡아먹을 때 마다 층을 나누어 구해주었다. 구현이 힘든것이지 문제의 아이디어는 그렇게 높지 않다. 자잘한 실수가 나오기 쉬운 문제라고 생각한다. 더보기 #include #include #include #include using namespace std; int dx[5] = { -1, 0, 1, 0 }; int dy[5] = { 0, -1, 0, 1 }; int dis[25][25][410], ch[25][25][410]; int map[25][25], now_size[410]; int n, cnt; int ansdis = 0; struct dat { int x, y, cnt; }; queue q; void..