2016) NYPC - Stage 1-1 [포션마시기]
http://arki13.blog.me/220811504580
http://arki13.blog.me/220811504580
체력 포션 마시기
포션은 게임에 흔히 등장하는 요소 중 하나로, 마시면 여러 가지 효과를 발휘한다.
이 중에서도 가장 흔한 것은 체력이 부족할 때 마시는 붉은 빛의 체력 회복 포션이다.
지금 개발 중인 신작 테일즈스토리의전설 3에서는 체력과 포션이 다음과 같이 동작한다.
먼저 현재 캐릭터의 체력이 A, 최대 체력이 B라고 하자. 체력과 최대 체력은 항상 양의 정수이다.
이때 H만큼의 체력을 회복시켜주는 포션을 마시면:
H만큼 회복되어도 체력이 최대 체력을 넘치지 않는 경우, 그만큼 회복된다.
그렇지 않아서 H만큼 회복되면 최대 체력을 넘치는 경우, 넘치는 만큼은 25%만큼만
회복되어 최대 체력을 일시적으로 넘길 수 있다.
최대 체력을 넘어 추가로 회복되는 양의 소수점 아래는 버림한다.
최대 체력을 일시적으로 넘을 때, 원래 최대 체력의 150%를 넘길 수 없다. 역시, 이 한계 또한
소수점 아래에서 버림한다.
현재 캐릭터의 체력, 최대 체력, 그리고 마실 포션의 회복량이 주어질 때 캐릭터가 갖게 될 체력을
구하는 프로그램을 작성해 보자.
입력
세 정수 A, B, H가 공백으로 구분되어 주어진다. 입력으로 주어지는 모든 값은 양의 정수이며,
999 이하이다. A, B, H는 각각 현재 체력, 최대 체력, 포션의 회복량이다. 현재 체력은 최대 체력보다 작거나 같다.
출력
캐릭터가 갖게 될 체력을 출력한다.
입력 예시 1
50 100 30
출력 예시 1
80
현재 체력이 50이고 최대 체력이 100일 때 30만큼 회복되는 포션을 마시면 체력이 80이 된다.
입력 예시 2
50 100 70
출력 예시 2
105
현재 체력이 50이고 최대 체력이 100일 때 70만큼 회복되는 포션을 마시면,
먼저 50만큼 회복된 뒤 넘치는 20의 25%만큼 회복된다.
입력 예시 3
50 100 73
출력 예시 3
105
소수점 아래는 버린다.
입력 예시 4
50 100 999
출력 예시 4
150
아주 큰 포션을 먹더라도 최대 체력의 150%는 넘길 수 없다. 지나친 포션 섭취는 중독을 부를 수 있다.
#include<stdio.h>
int main(){
int hp,max,heal,res;
scanf("%d %d %d",&hp,&max,&heal);
res =hp + heal;
if (res>max){
res = max+(res-max)*0.25;
}
if (res > max*1.5){
res = max*1.5;
}
printf("%d\n",res);
}
/*hp - 현재체력
max - 최대체력
heal - 포션 회복량
res - 결과값 */
저작권 문제시 빠르게 삭제하도록 하겠습니다.