사양
- 몬스터 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;
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)은 왜 출력 직후 바로 검사하는 게 안전할까?