Skip to content

Commit 66e2492

Browse files
committed
📝 post BOJ solution
1 parent cb502aa commit 66e2492

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
---
2+
layout: single
3+
title: "[백준 14803] Steed 2: Cruise Control (Small) (C#, C++) - soo:bak"
4+
date: "2026-01-22 16:33:00 +0900"
5+
description: "백준 14803번 C#, C++ 풀이 - 다른 말들을 추월하지 않으면서 목적지에 도달할 수 있는 최대 일정 속도를 구하는 문제"
6+
tags:
7+
- 백준
8+
- BOJ
9+
- 14803
10+
- C#
11+
- C++
12+
- 알고리즘
13+
- 구현
14+
- 수학
15+
keywords: "백준 14803, 백준 14803번, BOJ 14803, Steed 2: Cruise Control, C# 풀이, C++ 풀이, 알고리즘"
16+
---
17+
18+
## 문제 링크
19+
[14803번 - Steed 2: Cruise Control (Small)](https://www.acmicpc.net/problem/14803)
20+
21+
## 설명
22+
다른 말들을 추월하지 않으면서 목적지에 도달할 수 있는 최대 일정 속도를 구하는 문제입니다.
23+
24+
다른 말들은 앞지르지 못하므로, 가장 늦게 도착하는 말보다 빨리 갈 수 없습니다. 따라서 도착까지 걸리는 시간이 가장 큰 말을 찾으면, Annie의 최대 속도는 목적지 거리를 그 시간으로 나눈 값입니다.
25+
26+
<br>
27+
28+
## 접근법
29+
먼저 각 말에 대해 목적지까지 남은 거리와 속도를 이용해 도착 시간을 계산합니다.
30+
31+
다음으로 모든 말의 도착 시간 중 최댓값을 찾습니다. Annie의 최대 속도는 목적지 거리를 이 최댓값으로 나눈 값입니다.
32+
33+
시간 복잡도는 O(N)입니다.
34+
35+
<br>
36+
37+
- - -
38+
39+
## Code
40+
41+
### C#
42+
```csharp
43+
using System;
44+
using System.Text;
45+
using System.Globalization;
46+
47+
class Program {
48+
static void Main() {
49+
var t = int.Parse(Console.ReadLine()!);
50+
var sb = new StringBuilder();
51+
for (var tc = 1; tc <= t; tc++) {
52+
var first = Console.ReadLine()!.Split();
53+
var d = double.Parse(first[0]);
54+
var n = int.Parse(first[1]);
55+
56+
var maxTime = 0.0;
57+
for (var i = 0; i < n; i++) {
58+
var parts = Console.ReadLine()!.Split();
59+
var k = double.Parse(parts[0]);
60+
var s = double.Parse(parts[1]);
61+
var time = (d - k) / s;
62+
if (time > maxTime)
63+
maxTime = time;
64+
}
65+
66+
var speed = d / maxTime;
67+
sb.Append("Case #").Append(tc).Append(": ")
68+
.Append(speed.ToString("F6", CultureInfo.InvariantCulture))
69+
.Append('\n');
70+
}
71+
Console.Write(sb);
72+
}
73+
}
74+
```
75+
76+
### C++
77+
```cpp
78+
#include <bits/stdc++.h>
79+
using namespace std;
80+
81+
typedef long long ll;
82+
83+
int main() {
84+
ios::sync_with_stdio(false);
85+
cin.tie(nullptr);
86+
87+
int t; cin >> t;
88+
cout << fixed << setprecision(6);
89+
for (int tc = 1; tc <= t; tc++) {
90+
double d;
91+
int n;
92+
cin >> d >> n;
93+
double maxTime = 0.0;
94+
for (int i = 0; i < n; i++) {
95+
double k, s;
96+
cin >> k >> s;
97+
double time = (d - k) / s;
98+
if (time > maxTime)
99+
maxTime = time;
100+
}
101+
double speed = d / maxTime;
102+
cout << "Case #" << tc << ": " << speed << "\n";
103+
}
104+
105+
return 0;
106+
}
107+
```

0 commit comments

Comments
 (0)