[문제출처 : Codechef] 이번에 살펴볼 문제는 굉장히 간단한 문제입니다. 자동차 경주대회가 시작되었습니다. N개의 차량들이 각자의 최고속도로 달리기 시작했습니다. 이 때, 뒤에 있는 차량은 무조건 앞의 차량의 속도에 맞추거나, 자신의 최고속도로 달릴 수 있다면 그렇게 한다고 가정합니다. 그럴 경우 N개의 차량 중 자신의 최고속도로 달리고 있는 차는 몇 대일까요?
처음으로 생각할 것은 가장 앞에 있는 차는 자신의 앞에 다른 차가 없기 때문에 무조건 최고속도로 달릴 수 있게 됩니다. 그리고 다음 차부터는 앞차까지의 최저속도와 자신의 최고속도를 비교하여 속도를 선택하게 됩니다.
이를 코드로 구현하면,
def numMaxSpeed(speeds):
## 가장 첫번째 자동차는 maximum speed로 달립니다.
num = 1
minSpeed = speeds[0]
## 두번째 자동차부터 현재의 minimum speed보다 작거나 같으면 최고 속도로 달릴 수 있게 됩니다.
## 반면 minimum speed는 업데이트 시켜 줘야겠죠?
for i in range(1, len(speeds)):
if speeds[i] <= minSpeed:
num += 1
minSpeed = speeds[i]
return num
이제 샘플 예제들을 가지고 결과를 확인해 봅시다.
>>> print numMaxSpeed([10])
1 #자동차가 한대면 무조건 최고속도로 달릴 수 있습니다.
>>> print numMaxSpeed([8,3,6])
2 #첫번째, 두번째 자동차가 최고속도로 달릴 수 있습니다.
>>> print numMaxSpeed([4,5,1,2,3])
2 #첫번째, 세번째 자동차가 최고속도로 달릴 수 있습니다.