문제
A sequence of numbers is called an arithmetic progression if the difference between any two consecutive elements is the same.
Given an array of numbers arr, return true if the array can be rearranged to form an arithmetic progression. Otherwise, return false.
arr 배열의 요소들간의 차가 일정하면 true, 일정하지 않다면 false를 반환한다.
예시
Example 1:
Input: arr = [3,5,1]
Output: true
Explanation: We can reorder the elements as [1,3,5] or [5,3,1] with differences 2 and -2 respectively, between each consecutive elements.
Example 2:
Input: arr = [1,2,4]
Output: false
Explanation: There is no way to reorder the elements to obtain an arithmetic progression.
제약 조건
Constraints:
- 2 <= arr.length <= 1000
- -106 <= arr[i] <= 106
해결 과정
- 우선 arr 배열을 내림차순으로 정렬한다.
- 첫번째 요소와 두번째 요소의 차이를 diff 변수에 할당한다.
- for문으로 arr를 전체탐색한다. 이때 시작은 1부터 시작한다. (0과 1의 차는 이미 갖고 있기 때문에)
- temp 변수에 임의로 요소들간의 차를 할당한다.
- 만약 diff와 값이 다르다면 false를 반환한다.
- 전체 탐색을 마치면 모든 요소들간의 차가 일정한 것이기 때문에 true를 반환한다.
해결 코드
/**
* @param {number[]} arr
* @return {boolean}
*/
var canMakeArithmeticProgression = function(arr) {
arr.sort((a, b) => b - a);
let diff = arr[0] - arr[1];
for(let i = 1 ; i < arr.length - 1 ; i++){
let temp = arr[i] - arr[i + 1];
if(diff !== temp) return false;
}
return true;
};
'leetCode' 카테고리의 다른 글
[Easy] 1790. Check if One String Swap Can Make Strings Equal (0) | 2022.05.30 |
---|---|
[Easy] 202. Happy Number (0) | 2022.05.30 |
[Easy] 1822. Sign of the Product of an Array (0) | 2022.05.30 |
[Easy] 1779. Find Nearest Point That Has the Same X or Y Coordinate (0) | 2022.05.30 |
[Easy] 976. Largest Perimeter Triangle (0) | 2022.05.28 |
Comment