코드업 문제집 파이썬 if~else 1228 : 비만도 측정 1
[문제]
희윤이는 '성문이 두마리 치킨' 가게를 운영하고 있다.
치킨집을 운영하다 보니 매일 치킨을 먹게 되었다.
그러던 어느 날 몸무게를 재어보니 80kg이 나가는 것을 보고 깜짝 놀랐다.
희윤이 여자친구는 비만인 사람을 제일 싫어 하므로 희윤이는 절대 비만이면 안 된다.
희윤이가 비만인지 아닌지 판별하는 프로그램을 작성하시오.
* 비만도 계산 공식(브로카의 공식)
| 항목 | 공식 |
| 표준몸무게 = | (실제 키 - 100) * 0.9 |
| 비만도 = | (실제 몸무게 - 표준몸무게) * 100 / 표준 몸무게 |
* 비만도에 따른 등급 판정
| 등급 | 비만도 수치 |
| 10이하 | 정상 |
| 10초과 20이하 | 과체중 |
| 20 초과 | 비만 |
예시)
희윤이의 키는 170.0Cm 이고, 몸무게는 80.0kg이라고 하자.
희윤이의 표준 몸무게 = (170 - 100) * 0.9 = 63 kg
희윤이의 비만도 = (80 - 63) * 100 / 63 = 26.98
따라서 비만도가 26.98이므로 희윤이는 "비만"
[문제 해설(핵심)]
키와 몸무게를 입력받아 비만도를 계산하고
- 10 이하 → 정상
- 10 초과 20 이하 → 과체중
- 20 초과 → 비만
을 출력하는 문제이다.
먼저 키를 이용해 표준 몸무게를 구한다.
표준 몸무게 = (키 - 100) * 0.9
그다음 실제 몸무게와 표준 몸무게를 이용해 비만도를 계산한다.
비만도 = (실제 몸무게 - 표준 몸무게) * 100 / 표준 몸무게
계산한 비만도를 if, elif, else로 구분하면 된다.
[문제 풀이]
키와 몸무게를 실수로 입력받는다.
↓
표준 몸무게를 계산한다.
standard = (height - 100) * 0.9
↓
비만도를 계산한다.
obesity = (weight - standard) * 100 / standard
↓
비만도가 10 이하인지 확인한다.
↓
아니라면 20 이하인지 확인한다.
↓
나머지는 비만이다.
[사용된 개념 설명]
float
소수점이 있는 실수를 저장할 때 사용한다.
height, weight = map(float, input().split())
<=
왼쪽의 값이 오른쪽 값보다 작거나 같은지 확인한다.
obesity <= 10
elif
앞의 if 조건이 거짓일 때 다음 조건을 확인한다.
if obesity <= 10:
print("정상")
elif obesity <= 20:
print("과체중")
elif obesity <= 20만 적어도 되는 이유는 이미 앞에서 10 이하인 경우를 걸러냈기 때문이다.
따라서 이 부분에서는 자연스럽게
10 초과 20 이하
인 값만 해당된다.
[코드]
height, weight = map(float, input().split())
standard = (height - 100) * 0.9
obesity = (weight - standard) * 100 / standard
if obesity <= 10:
print("정상")
elif obesity <= 20:
print("과체중")
else:
print("비만")
[다른 풀이 - 계산식 바로 사용]
표준 몸무게와 비만도를 따로 변수에 저장하지 않고 한 번에 계산할 수도 있다.
height, weight = map(float, input().split())
standard = (height - 100) * 0.9
if (weight - standard) * 100 / standard <= 10:
print("정상")
elif (weight - standard) * 100 / standard <= 20:
print("과체중")
else:
print("비만")
이렇게 풀 수도 있지만 같은 계산식을 여러 번 사용하기 때문에
obesity = (weight - standard) * 100 / standard
처럼 비만도를 변수에 저장하는 첫 번째 풀이가 더 보기 쉽고 효율적이다.
'코딩공부 > 코드업 파이썬' 카테고리의 다른 글
| 코드업 문제집 파이썬 if~else 1231 : 계산기 1 (1) | 2026.09.07 |
|---|---|
| 코드업 문제집 파이썬 if~else 1226 : 이번 주 로또 (1) | 2026.09.07 |
| 코드업 문제집 파이썬 if~else 1218 : 삼각형 판단하기 (0) | 2026.09.07 |
| 코드업 문제집 파이썬 if~else 1214 : 이 달은 며칠까지 있을까? (3) | 2026.09.06 |
| 코드업 문제집 파이썬 if~else 1212 : 삼각형의 성립 조건 (0) | 2026.09.06 |
댓글