하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능
[3코1파] 2023.01.04~ (178차)
[4코1파] 2023.01.13~ (170일차)
[1스4코1파] 2023.04.12~ (81일차)
[1스4코2파] 2023.05.03 ~ (59일차)
2023.06.30 [178일차]
LeetCode Patterns
https://leetcode.com/problems/car-fleet/description/
https://leetcode.com/problems/car-fleet/description/
문제 설명
![](https://velog.velcdn.com/images/heyggun/post/8411e915-ff06-4a0f-b9b1-5612330cc5c5/image.png
일직선으로 n개의 차가 있을 때 각 차는 position, speed의 값을 가짐
목적지는 target 으로 여기까지 도착해야 됨.
자동차는 앞서가는 차를 따라잡을 수 있음. 빠른 차는 느린 차의 속도에 맞춰서 속도를 줄여야 하고,
자동차가 동일한 위치에 동일한 속도로 주행하면 하나의 자동차로 간주할때,
목적지에 도착할 자동차 수를 return함.. (맞나?)
문제 풀이 방법
진짜 이거 뭔말임..
일단 일직선 상에 차가 있는데 각 차의 position 이랑 speed가 있고, 그리고 도착해야하는 target(destination)이 주어지는데.
각 차들은 target 에서 position을 빼고 speed 로 나눠주면, target 까지 얼마나 걸리는지 계산할 수 있다.
destination에서 가장 먼 차부터, 몇 번 이동해야 destination으로 도착할 수 있는지 stack에 쌓고, 도착지로 부터 멀리 떨어져 있는 차가 앞선 차보다 더 적은 횟수로 도착하면 추월한 것이므로 stack에 안쌓음..
일단 이렇게 이해했는데 몬말이여,,
내 코드
class Solution:
def carFleet(self, target: int, position: List[int], speed: List[int]) -> int:
pair = [[p,s] for p, s in zip(position, speed)]
stack = []
for p,s in sorted(pair)[::-1]:
stack.append((target-p) / s)
if len(stack)>=2 and stack[-1] <= stack[-2]:
stack.pop()
return len(stack)
증빙
여담
뭐야 이거 무슨말이야
몰라서 이것 저것 봄
https://www.codingninjas.com/studio/library/car-fleet