사양

  • 몬스터 HP: 100
  • 플레이어 데미지: 20 (매 라운드 고정)
  • 라운드 제한: 5
  • 5라운드 안에 처치 못하면 실패

출력 예시(형식)

Round: 1 몬스터 체력: 80
Round: 2 몬스터 체력: 60
...

구조

풀이 핵심

  • 데이터: hp (몬스터 체력), damage (플레이어 공격력), maxRounds (제한 라운드)
  • 로직: 한 라운드가 돌 때마다 hp -= damage로 체력 감소
  • 종료 조건
    • hp == 0이면 승리(처치)
    • 5라운드를 다 돌았는데도 hp > 0이면 실패
int hp = 100;
const int damage = 20;
const int maxRounds = 5;

for (int round = 1; round <= maxRounds; round++) {
    hp -= damage;
    if (hp < 0) hp = 0;  // 체력은 0 미만으로 내려가지 않게 보정(클램프)

    cout << "Round: " << round << " 몬스터 체력: " << hp << '\n';

    if (hp == 0) {
        cout << "몬스터 처치" << '\n';
        break;
    }

    if (round == maxRounds) {
        cout << "제한 라운드 종료 (실패)" << '\n';
    }
}

자주 하는 실수

  • 라운드 조건을 round < 5로 써서 5라운드가 빠지는 실수
  • hp가 0 아래로 내려가는데도 그대로 출력해서 음수 체력이 나오는 경우(클램프 필요)
  • “승리/실패 조건 체크” 위치를 뒤로 미뤄서, 이미 죽었는데도 다음 로직이 실행되는 경우

체크 질문 (스스로 답해보기)

  • round <= maxRounds가 되어야 “5라운드까지” 실행될까?
  • hp < 0일 때 0으로 고정하는 이유는 뭘까?
  • 승리 조건(hp == 0)은 왜 출력 직후 바로 검사하는 게 안전할까?

profile
李家네_공부방

0개의 댓글