
😎풀이
- 지상 놀이기구를 먼저 탔을 때, 가능한 최소 시간 탐색
- 수중 놀이기구를 먼저 탔을 때, 가능한 최소 시간 탐색
- 두 놀이기구를 가장 빨리 탔을 때의 최소 시간 반환
function earliestFinishTime(landStartTime: number[], landDuration: number[], waterStartTime: number[], waterDuration: number[]): number {
let earliestTime = Infinity
for(let i = 0; i < landStartTime.length; i++) {
const landTime = landStartTime[i] + landDuration[i]
for(let j = 0; j < waterStartTime.length; j++) {
const waterTime = Math.max(waterStartTime[j] - landTime, 0) + waterDuration[j]
earliestTime = Math.min(earliestTime, landTime + waterTime)
}
}
for(let i = 0; i < waterStartTime.length; i++) {
const waterTime = waterStartTime[i] + waterDuration[i]
for(let j = 0; j < landStartTime.length; j++) {
const landTime = Math.max(landStartTime[j] - waterTime, 0) + landDuration[j]
earliestTime = Math.min(earliestTime, waterTime + landTime)
}
}
return earliestTime
};