-
백준(BOJ) 12869번 뮤탈리스크알고리즘 풀이/백준(Boj) 2019. 9. 28. 17:17
문제 : https://www.acmicpc.net/problem/12869
문제
수빈이는 강호와 함께 스타크래프트 게임을 하고 있다. 수빈이는 뮤탈리스크 1개가 남아있고, 강호는 SCV N개가 남아있다.
각각의 SCV는 남아있는 체력이 주어져있으며, 뮤탈리스크를 공격할 수는 없다. 즉, 이 게임은 수빈이가 이겼다는 것이다.
뮤탈리스크가 공격을 할 때, 한 번에 세 개의 SCV를 공격할 수 있다.
- 첫 번째로 공격받는 SCV는 체력 9를 잃는다.
- 두 번째로 공격받는 SCV는 체력 3을 잃는다.
- 세 번째로 공격받는 SCV는 체력 1을 잃는다.
SCV의 체력이 0 또는 그 이하가 되어버리면, SCV는 그 즉시 파괴된다. 한 번의 공격에서 같은 SCV를 여러 번 공격할 수는 없다.
남아있는 SCV의 체력이 주어졌을 때, 모든 SCV를 파괴하기 위해 공격해야 하는 횟수의 최솟값을 구하는 프로그램을 작성하시오.
풀이 :
scv가 한개든 두,세개든 0으로 모두 기본값을 주고 체력을 따로 받은 후 재귀함수를 돌리자. 이렇게 하면 scv의 수에 상
관없이 같은 재귀함수를 호출할 수 있다.
뮤탈리스크는 -9 -3 -1의 피해를 줌으로 각 scv의 체력이 깍이는 경우의 수는 6가지이다.
-1 -3 -9 // -1 -9 -3 // -3 -1 -9 // -3 -9 -1 // -9 -1 -3 // -9 -3 -1
체력이 음수가 나올경우에는 해당 scv의 체력을 0으로 만들고 재귀함수를 돌리자.
코드 ( C ++ )
'알고리즘 풀이 > 백준(Boj)' 카테고리의 다른 글
백준(BOJ) 1600번 말이 되고픈 원숭이 (63) 2019.10.03 백준(BOJ) 14442번 벽 부수고 이동하기 2 (31) 2019.10.01 백준(BOJ) 5014번 스타트링크 (31) 2019.09.27 백준(BOJ) 15683번 감시 (31) 2019.09.26 백준(BOJ) 14238번 출근 기록 (31) 2019.09.25