[Problem Solving] BOJ 21758: 꿀 따기
문제 출처: https://www.acmicpc.net/problem/21758 N개의 장소가 있을 때,두 꿀벌이 위치할 장소와, 벌통을 지정한다.꿀벌은 벌통 방향으로 날아가면서 꿀을 따는데, 다른 꿀벌이 있던 자리에 있는 꿀은 따지 않는다고 할 때, 벌들이 딸 수 있는 최대 꿀의 양을 구하는 문제이다. 일단 딸 수 있는 최대의 꿀을 얻기 위해서는 양쪽 끝에 꿀벌들이 있거나, 벌통이 있어야 한다.이 때 세 가지 경우가 존재한다.왼쪽 끝, 가운데 어딘가, 오른쪽 끝에꿀벌, 벌통, 꿀벌꿀벌, 꿀벌, 벌통벌통, 꿀벌, 꿀벌로 존재하는 것이다. 1) 꿀벌 - 벌통 - 꿀벌일단 좌,우 에서 꿀벌들이 벌통을 향해 오기 때문에, accSum[N]에 벌통에 위치한 꿀의 양인 arr[i]을 한번 더 더해주고(꿀벌 둘이서..
2025. 8. 5.
[Problem Solving] BOJ 14442: 벽 부수고 이동하기 2
문제 출처: https://www.acmicpc.net/problem/14442 벽을 최대 K개 부술 수 있을 때, (0, 0)부터 (N - 1, M - 1)까지 도달할 수있는 최단 거리를 구하는 문제이다. 우선 Point를 정의해야하는데, Point는 좌표 y, x와 해당 좌표까지 도달하는데 부순 벽의 개수(counter)다. dist[i][j][k]는 (0, 0)부터 (i, j) 까지 도달 하는데, k개의 벽을 부쉈을 때의 최단 거리이다. 시작점의 Point는 (0, 0, 0)이 된다.시작점에서 BFS를 수행하는데, 인접한 곳이 열린 공간이고, 그 공간 까지의 최단 거리가 현재 지점의 dist에 1 증가시킨 값보다 크다면 counter를 유지한 채로 최단 거리를 갱신한다.인접한 곳이 벽이고, 부술 ..
2025. 8. 4.