작성일 :

문제 링크

25285번 - 심준의 병역판정검사

설명

신장과 체중이 주어질 때, 병역판정검사 기준에 따라 신체등급을 판정하는 문제입니다.

신장 구간에 따라 등급 판정 기준이 다르며, 일부 구간에서는 BMI 값에 따라 세부 등급이 결정됩니다.


접근법

먼저 신장 구간을 확인하여 BMI 계산이 필요한지 판단합니다. 신장이 140.1cm 미만이면 6급, 146cm 미만이면 5급, 159cm 미만이면 4급, 204cm 이상이면 4급으로 BMI와 무관하게 등급이 결정됩니다.


다음으로 신장이 159cm 이상 204cm 미만인 구간에서는 BMI를 계산합니다. BMI는 체중을 신장의 제곱으로 나눈 값이며, 신장은 미터 단위로 변환하여 계산합니다.


이후 신장이 159cm 이상 161cm 미만인 경우, BMI가 16 이상 35 미만이면 3급, 그 외에는 4급입니다. 신장이 161cm 이상 204cm 미만인 경우에는 BMI 구간에 따라 1급부터 4급까지 세분화됩니다. BMI가 20 이상 25 미만이면 1급, 18.5 이상 20 미만 또는 25 이상 30 미만이면 2급, 16 이상 18.5 미만 또는 30 이상 35 미만이면 3급, 그 외에는 4급입니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;

class Program {
  static void Main() {
    var t = int.Parse(Console.ReadLine()!);
    for (var i = 0; i < t; i++) {
      var parts = Console.ReadLine()!.Split();
      var h = double.Parse(parts[0]);
      var w = double.Parse(parts[1]);
      var bmi = w / Math.Pow(h / 100.0, 2);

      var grade = 4;
      if (h < 140.1) grade = 6;
      else if (h < 146) grade = 5;
      else if (h < 159) grade = 4;
      else if (h < 161) {
        if (bmi >= 16.0 && bmi < 35.0) grade = 3;
        else grade = 4;
      } else if (h < 204) {
        if (bmi >= 20.0 && bmi < 25.0) grade = 1;
        else if ((bmi >= 18.5 && bmi < 20.0) || (bmi >= 25.0 && bmi < 30.0)) grade = 2;
        else if ((bmi >= 16.0 && bmi < 18.5) || (bmi >= 30.0 && bmi < 35.0)) grade = 3;
        else grade = 4;
      }

      Console.WriteLine(grade);
    }
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int t; cin >> t;
  while (t--) {
    double h, w; cin >> h >> w;
    double bmi = w / pow(h / 100.0, 2);
    int grade = 4;
    if (h < 140.1) grade = 6;
    else if (h < 146) grade = 5;
    else if (h < 159) grade = 4;
    else if (h < 161) {
      if (bmi >= 16.0 && bmi < 35.0) grade = 3;
      else grade = 4;
    } else if (h < 204) {
      if (bmi >= 20.0 && bmi < 25.0) grade = 1;
      else if ((bmi >= 18.5 && bmi < 20.0) || (bmi >= 25.0 && bmi < 30.0)) grade = 2;
      else if ((bmi >= 16.0 && bmi < 18.5) || (bmi >= 30.0 && bmi < 35.0)) grade = 3;
      else grade = 4;
    }
    cout << grade << "\n";
  }

  return 0;
}