작성일 :

문제 링크

9501번 - 꿍의 우주여행

설명

각 우주선의 최고 속도, 보유 연료, 연료 소비율이 주어졌을 때,

해당 우주선이 목적지까지 도달할 수 있는지 판단하는 문제입니다.

  • 우주선은 즉시 최고 속도에 도달하며,
  • 이동 시간은 목적지 거리 ÷ 최고 속도로 계산됩니다.
  • 이때 이동 시간에 연료 소비율을 곱한 값은 목적지까지 이동하는 데 필요한 연료의 총량을 의미합니다.
  • 이 값이 현재 보유한 연료량보다 작거나 같아야, 해당 우주선은 목적지까지 무사히 도달할 수 있습니다.

즉, 도달 시간 × 연료 소비율 ≤ 보유 연료 조건을 만족하는 우주선의 개수를 세어야 합니다.


접근법

  • 테스트케이스 수를 입력받습니다.
  • 각 테스트케이스마다 우주선의 개수와 목적지까지의 거리를 입력받습니다.
  • 이어서 각 우주선에 대해 최고속도, 연료량, 연료 소비율을 입력받습니다.
  • 다음 식을 통해 조건을 판단합니다:

    \[\frac{\text{목적지까지의 거리}}{\text{최고속도}} \times \text{연료 소비율} \leq \text{보유 연료}\]
  • 조건을 만족하는 우주선의 개수를 세어 출력합니다.



C# 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;

class Program {
  static void Main() {
    int t = int.Parse(Console.ReadLine());
    while (t-- > 0) {
      var parts = Console.ReadLine().Split();
      int n = int.Parse(parts[0]);
      int d = int.Parse(parts[1]);
      int cnt = 0;
      for (int i = 0; i < n; i++) {
        var input = Console.ReadLine().Split();
        int v = int.Parse(input[0]);
        int f = int.Parse(input[1]);
        int c = int.Parse(input[2]);
        double time = (double)d / v;
        if (time * c <= f) cnt++;
      }
      Console.WriteLine(cnt);
    }
  }
}

C++ 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;

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

  int t; cin >> t;
  while (t--) {
    int n, d; cin >> n >> d;
    int cnt = 0;
    while (n--) {
      int v, f, c; cin >> v >> f >> c;
      if ((double)d / v * c <= f) cnt++;
    }
    cout << cnt << "\n";
  }

  return 0;
}