문제가 꿀 얘기이다 보니까 예전에 군대에서 이등병 때에 여러 이유로 잡일에 빠졌다고 꿀벌이라고 불렸던 기억이 났습니다. (물론 그 이후로는 아주 성실하게 만기로 전역했습니다.) 그런데 잘 생각해보니 꿀벌 입장에서는 열심히 일을 하는 것 뿐인데, 꿀을 빤다는 얘기가 인간들에게는 게으르고, 할 일을 잘 뺀다는 의미로 쓰는 걸 안다면 참 억울하게 느껴질지도 모르겠네요 ㅎㅎ
21758번: 꿀 따기
첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다.
www.acmicpc.net
문제 설명)
이 문제는 수열이 주어지고, 해당 수열에서 두 벌의 위치와 꿀통의 위치를 조절해서 모을 수 있는 최대의 꿀의 양을 구하는 문제입니다. 여기서 벌은 각각 꿀통까지 일직선으로 날아가면서 순차적으로 지나가는 숫자들만큼의 꿀을 모읍니다. 다만, 두 벌의 출발점에 해당하는 꿀은 두 벌 모두 가질 수 없고, 한 마리가 이미 지나갔다고 해서 그 다음으로 오는 벌이 지나가는 타일에 해당하는 꿀을 못 모으거나 하지는 않습니다. (벌통 역시 두 마리의 벌 모두 벌통 타일에 해당하는 꿀의 양을 얻을 수 있습니다.)
문제 풀이)
저는 일단 두 마리의 벌과 벌통의 위치를 세 가지로 나누어 생각했습니다.
1. 벌, 벌, 꿀통
2. 꿀통, 벌, 벌
3. 벌, 꿀통, 벌
그리고, 각각의 최대 이익이 될 수 있는 경우를 구한 다음에 그 셋을 비교하여 답을 도출했습니다. 물론 그렇다고 모든 경우의 수를 고려해야 하는 것은 아니고, 각각 최대로 꿀을 모으기 위해서는 어느정도 위치가 정해진 경우도 존재했습니다.
1) 🐝, 🐝, 🍯
이 경우는 무조건 꿀통은 맨 오른쪽 끝에 있고, 벌 한 마리는 맨 왼쪽 끝에 있어야 최대로 꿀을 모을 수 있습니다. 즉, 이 위치만 고정해 놓고 다른 벌의 위치를 바꿔가면서 누적합을 구해야 합니다.
🐝 | 🍯 |
2) 🍯, 🐝, 🐝
이 경우도 위와 마찬가지입니다. 다만, 이번에는 꿀통이 맨 왼쪽 끝으로, 벌 한 마리가 맨 오른쪽 끝으로 가야할 것입니다.
🍯 | 🐝 |
3) 🐝, 🍯, 🐝
꿀통이 가운데 있는 경우에는 두 벌의 위치가 양쪽 끝에 위치해야 가장 많은 꿀을 모을 수 있습니다. 그렇기 때문에 두 벌을 맨 끝으로 고정하고 꿀통의 위치만 바꿔가면서 누적합을 구하면 됩니다.
🐝 | 🐝 |
예를 들어 9 9 4 1 4 9 9 라면, 사실 1번과 2번 경우를 하나로 생각해도 됩니다. 왜냐면 숫자가 좌우로 완전히 대칭이기 때문입니다. 그렇기에 이렇게 입력값이 나오면 푸는 입장에서는 아주 감사한 일이 아닐 수 없겠죠? 여튼, 그럼 이제 1번과 3번의 경우만 나눠서 누적합을 구해보면 풀 수 있겠습니다.
1) 🐝, 🐝, 🍯
🐝 | 🐝 | 4 | 1 | 4 | 9 | 9 🍯 | |
꿀 양 | 27 | 27 | 총 54 |
🐝 | 9 | 🐝 | 1 | 4 | 9 | 9 🍯 | |
꿀 양 | 32 | 23 | 총 55 |
🐝 | 9 | 4 | 🐝 | 4 | 9 | 9 🍯 | |
꿀 양 | 35 | 22 | 총 57 |
🐝 | 9 | 4 | 1 | 🐝 | 9 | 9 🍯 | |
꿀 양 | 32 | 18 | 총 50 |
🐝 | 9 | 4 | 1 | 4 | 🐝 | 9 🍯 | |
꿀 양 | 27 | 9 | 총 36 |
3) 🐝, 🍯, 🐝
🐝 | 9 🍯 | 4 | 1 | 4 | 9 | 🐝 | |
꿀 양 | 9 | 총 36 | 27 |
🐝 | 9 | 4 🍯 | 1 | 4 | 9 | 🐝 | |
꿀 양 | 13 | 총 30 | 18 |
🐝 | 9 | 4 | 1 🍯 | 4 | 9 | 🐝 | |
꿀 양 | 14 | 총 28 | 14 |
🐝 | 9 | 4 | 1 | 4 🍯 | 9 | 🐝 | |
꿀 양 | 18 | 총 31 | 13 |
🐝 | 9 | 4 | 1 | 4 | 9 🍯 | 🐝 | |
꿀 양 | 27 | 총 36 | 9 |
즉, 이 경우에는 57이 답이 됩니다.
'Algorithm > Computational Thinking' 카테고리의 다른 글
BOJ 2516 (원숭이) - CT 풀이 (0) | 2022.05.19 |
---|---|
BOJ 2533 (사회망 서비스(SNS)) - CT 풀이 (0) | 2022.05.18 |
BOJ 19940 (피자 오븐) - CT 풀이, 첫 게시글 (0) | 2022.05.16 |