티스토리 뷰

 

문제

게임 캐릭터가 몬스터와 1:1 전투를 하려 합니다.

몬스터는 처음에 일정 수치의 체력(HP)를 가지고 있습니다.

캐릭터가 전투에서 이기려면 몬스터를 공격해 몬스터의 체력은 0이하로 만들어야 합니다.

캐린터는 공격 마법만 사용하며, 공격 마법은 항상 같은 데미지를 입힙니다.

몬스터는 힐링 마법만을 사용하며 힐링 마법은 항상 같은 수치로 체력을 회복합니다.

둘은 항상 번갈아 가며 마법을 사용하고, 처음에는 항상 캐릭터가 먼저 공격을 시작합니다.

 

캐릭터의 공격력 attack와 몬스터가 자신의 차례에 회복하는 체력 recovery, 몬스터의 초기 체력 hp가 매개변수로 주어질 때, 몬스터를 잡기 위해서 최소 몇 번 공격해야 하는지 return하도록 solution함수를 작성하려 합니다.

빈칸을 채워 전체 코드를 완성해주세요.

 

 

 


 

 

 

 

주어진 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int attack, int recovery, int hp) {
    int count = 0;
    while(true){
        count +=         ;			//빈칸
        hp -= attack;
        if(hp <= 0)
                  ;				//빈칸
        hp +=        ;				//빈칸
    }
    return count;
}
int main() {
    int attack = 30;
    int recovery = 10;
    int hp = 60;
    int ret = solution(attack, recovery, hp);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

 

 

 

 

예시

attack recovery hp return
30 10 60 3

 

 

 

 


 

 

 

 

 

완성 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int attack, int recovery, int hp) {
    int count = 0;
    while(true){
        count += 1;
        hp -= attack;
        if(hp <= 0)
            break;
        hp += recovery;
    }
    return count;
}
int main() {
    int attack = 30;
    int recovery = 10;
    int hp = 60;
    int ret = solution(attack, recovery, hp);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

 

 

코드분석

단계 과정
main 공격력 attack와 회복력 recovery, 몬스터의 체력인 hp를 정의하고 solution함수를 호출한다.
solution 공격횟수를 저장할 변수 count를 선언한다.
solution - while 몬스터의 체력(hp)가 0이하가 될때까지
공격횟수 count++
공격에 따른 몬스터의 체력(hp)감소 hp-=attack;
공격이 끝나고 몬스터의 체력 회복 hp+=recover;
를 반복한다.
solution 공격횟수 count를 return한다.
main 결과를 출력한 후 프로그램을 종료한다.

 

 

 

예시

attack recovery hp return
30 10 60 3

 

 

 

 

 

 

 

 

 

 

GroomEdu

 

goorm

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io

 

 

 

 

 

 

댓글