작성일 :

문제 링크

4758번 - Filling Out the Team

설명

입력으로 주어지는 선수들의 능력치(속도, 체중, 힘)를 바탕으로,

선수가 어떤 포지션에 적합한지를 판단하는 문제입니다.

선수가 특정 포지션에 적합하려면 그 포지션의 최소 체중과 힘을 만족해야 하며, 동시에 최대 속도 이하를 유지해야 합니다.

입력으로 주어지는 선수의 능력치들이 각 포지션의 요구사항을 만족하는지 검사하여, 만족하는 포지션이 있다면 그 이름을 출력합니다.

만족하는 포지션이 없다면 No positions 을 출력합니다.


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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
namespace Solution {
  class Program {

    class Position {
      public string Name { get; }
      public double MinSpeed { get;}
      public int MinWeight { get; }
      public int MinStrength { get; }
      public Position(string name, double minSpeed, int minWeight, int minStrength) {
        Name = name;
        MinSpeed = minSpeed;
        MinWeight = minWeight;
        MinStrength = minStrength;
      }
    };

    static void Main(string[] args) {

      var positions = new List<Position> {
        new Position("Wide Receiver", 4.5, 150, 200),
        new Position("Lineman", 6.0, 300, 500),
        new Position("Quarterback", 5.0, 200, 300)
      };

      while (true) {
        var input = Console.ReadLine()!.Split(' ');
        var speed = double.Parse(input[0]);
        var weight = int.Parse(input[1]);
        var strength = int.Parse(input[2]);

        if (speed == 0 && weight == 0 && strength == 0) break ;

        var playable = new List<string>();
        foreach (var position in positions) {
          if (speed <= position.MinSpeed && weight >= position.MinWeight &&
              strength >= position.MinStrength)
            playable.Add(position.Name);
        }

        if (playable.Count == 0) Console.WriteLine("No positions");
        else Console.WriteLine(string.Join(" ", playable));
      }

    }
  }
}



[ 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <bits/stdc++.h>

using namespace std;

struct Position {
  string name;
  double minSpeed;
  int minWeight;
  int minStrength;
};

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

  vector<Position> positions {
    {"Wide Receiver", 4.5, 150, 200},
    {"Lineman", 6.0, 300, 500},
    {"Quarterback", 5.0, 200, 300}
  };

  while (true) {
    double speed;
    int weight, strength;
    cin >> speed >> weight >> strength;

    if (speed == 0 && weight == 0 && strength == 0) break ;

    vector<string> playable;
    for (const auto& posiiton : positions) {
      if (speed <= posiiton.minSpeed && weight >= posiiton.minWeight &&
          strength >= posiiton.minStrength)
        playable.push_back(posiiton.name);
    }

    if (playable.empty()) cout << "No positions\n";
    else {
      for (const auto& position : playable)
        cout << position << " ";
      cout << "\n";
    }
  }

  return 0;
}