개발 일지
1503. Last Moment Before All Ants Fall Out of a Plank (판자에서 모든 개미가 떨어지기 전 마지막 순간) 본문
코딩 테스트/LeetCode
1503. Last Moment Before All Ants Fall Out of a Plank (판자에서 모든 개미가 떨어지기 전 마지막 순간)
포카리tea 2024. 11. 7. 16:50길이가 n 단위인 나무 판자가 있습니다. 일부 개미는 판자 위를 걷고 있으며, 각 개미는 초당 1 단위의 속도로 움직입니다. 일부 개미는 왼쪽으로 움직이고 다른 개미는 오른쪽으로 움직입니다.
서로 다른 두 방향으로 움직이는 두 개미가 어느 시점에서 만나면 방향을 바꾸고 다시 계속 움직입니다. 방향을 바꾸는 데 추가 시간이 걸리지 않는다고 가정합니다.
개미가 시간 t에 판자의 한쪽 끝에 도달하면 즉시 판자에서 떨어집니다.
정수 n과 두 개의 정수 배열 left과 right가 주어지면 왼쪽과 오른쪽으로 이동하는 개미의 위치는 마지막 개미가 판자에서 떨어지는 순간으로 돌아갑니다.
예시 1:
입력: n = 4, 왼쪽 = [4,3], 오른쪽 = [0,1]
출력: 4
설명: 위 이미지에서:
- 인덱스 0에 있는 개미는 A로 명명되고 오른쪽으로 이동합니다.
- 인덱스 1에 있는 개미는 B로 명명되고 오른쪽으로 이동합니다.
- 인덱스 3에 있는 개미는 C로 명명되고 왼쪽으로 이동합니다.
- 인덱스 4에 있는 개미는 D로 명명되고 왼쪽으로 이동합니다.
개미가 판자 위에 있던 마지막 순간은 t = 4초입니다. 그 후, 판자에서 바로 떨어집니다. (즉, t = 4.0000000001에서는 판자 위에 개미가 없다고 할 수 있습니다.)
예시 2:
입력: n = 7, 왼쪽 = [], 오른쪽 = [0,1,2,3,4,5,6,7]
출력: 7
설명: 모든 개미가 오른쪽으로 이동하고 있으며 인덱스 0에 있는 개미는 떨어지기까지 7초가 필요합니다.
예시 3:
입력: n = 7, 왼쪽 = [0,1,2,3,4,5,6,7], 오른쪽 = []
출력: 7
설명: 모든 개미가 왼쪽으로 이동하고 있으며, 인덱스 7에 있는 개미는 떨어지기까지 7초가 필요합니다.
조건:
- 1 <= n <= 104
- 0 <= left.length <= n + 1
- 0 <= left[i] <= n
- 0 <= right.length <= n + 1
- 0 <= right[i] <= n
- 1 <= left.length + right.length <= n + 1
- left및 의 모든 값은 right고유하며, 각 값은 두 배열 중 하나에만 나타날 수 있습니다.
정답:
public class Solution {
public int GetLastMoment(int n, int[] left, int[] right) {
if (left.Count() == 0)
{
return n - right.Min();
}
else if (right.Count() == 0)
{
return left.Max();
}
if (left.Max() < n - right.Min())
{
return n - right.Min();
}
return left.Max();
}
}
해설: 개미가 판자에서 다 떨어져 나갈 때의 시간을 return하는 문제입니다.
고로 이동하는데 가장 시간이 걸린 개미를 구하면 됩니다.
오른쪽으로 가는 개미들은 수가 작을수록 오래걸리고 왼쪽으로 가는 개미들은 수가 클수록 오래걸립니다.
그렇기 때문에 right에서 가장 큰 수와 left에서 가장 작은 수에서 이동하는 거리를 비교합니다.
그 중 이동하는 거리가 더 큰 수를 return합니다.