본문 바로가기

코드업 문제집 파이썬 if~else 1228 : 비만도 측정 1

관리하수달 2026. 9. 7.

[문제]

희윤이는 '성문이 두마리 치킨' 가게를 운영하고 있다.

치킨집을 운영하다 보니 매일 치킨을 먹게 되었다.

그러던 어느 날 몸무게를 재어보니 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

처럼 비만도를 변수에 저장하는 첫 번째 풀이가 더 보기 쉽고 효율적이다.

댓글