코딩 테스트/LeetCode
1502. Can Make Arithmetic Progression From Sequence (시퀀스에서 산술적 진행을 할 수 있습니다)
포카리tea
2024. 10. 2. 11:56
연속된 두 요소의 차이가 같은 경우 숫자 시퀀스를 산술 진행이라고 합니다.
숫자 배열이 arr이면 배열을 재정렬하여 산술 진행을 형성할 수 있는 경우 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
예시 1:
입력: arr = [3,5,1]
출력: True
설명: 각 연속된 요소 사이에 각각 2와 -2의 차이를 두고 요소의 순서를 [1,3,5] 또는 [5,3,1]로 변경할 수 있습니다.
예시 2:
입력: arr = [1,2,4]
출력: False
설명: 산술 진행을 구하기 위해 요소의 순서를 변경할 수 있는 방법은 없습니다.
조건:
- 2 <= arr.length <= 1000
- -10^6 <= arr[i] <= 10^6
정답:
public class Solution {
public bool CanMakeArithmeticProgression(int[] arr) {
Array.Sort(arr);
int gap = Math.Abs(arr[1] - arr[0]);
for (int i = 2; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
if (gap != Math.Abs(arr[i] - arr[i - 1]))
{
return false;
}
}
return true;
}
}
해설: 요소의 차이를 찾기 위해 정렬한 후 arr[1] - arr[0]를 진행하여 요소의 차이인 gap을 구합니다.
그 이후 차이가 gap이 아닐 경우에 false를 모두 통과했을 경우엔 true를 return해줍니다.