본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.15] 몬스터 공격하기 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 10.
반응형

몬스터 공격하기


문제 설명

 

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

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

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

캐릭터공격 마법만 사용하며 / 공격 마법은 항상 같은 대미지를 입힙니다.

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

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

 

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

 


예시

 

attack recovery hp return 
30 10 60 3

 


코드 해석 및 전체 코드

 

count) 캐릭터가 총 몇번 공격하는지 return 할 값

 

while 문) 무한반복을 하되, break를 만날 시 while문 탈출

 

count += 1) while문을 돌 때마다 공격을 한 번씩 한다.

 

hp -= attack) 공격량(attack)만큼 체력(hp)을 감소시킨다.

 

if 문) 만약 체력0보다 작거나 같으면 while문을 탈출한다.

 

hp += recovery) 마법사가 먼저 마법을 사용해서 몬스터가 마법을 사용할 차례이므로 회복량만큼 체력을 회복시킨다.

 

차례 hp 변화 남은 hp
캐릭터 공격 - 30 30
몬스터 회복 + 10 40
캐릭터 공격 - 30 10
몬스터 회복 + 10 20
캐릭터 공격 - 30 0

hp가 0이 되므로 if문의 조건을 만족해 if문을 수행하므로(break) while문을 탈출한다. 

 

#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);
}

cos pro 2급 기출문제

github

 

구름 goormedu COS PRO 2급 기출문제 - C언어

[2차] 문제 5) 몬스터 공격하기

반응형

댓글