⚡문제 유형
배열, 정렬
📝문제
연속된 두 요소의 차이가 동일한 경우 일련의 숫자를 산술 진행 이라고 합니다.
숫자 배열이 주어지면 배열이 산술 진행 을 형성하도록 재배열될 수 있으면 true 를 반환 하고 그렇지 않으면 false를 반환 합니다.
📘예시
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.
Input: arr = [1,2,4]
Output: false
Explanation: There is no way to reorder the elements to obtain an arithmetic progression.
📗풀이
1. sort()를 통해 오름차순 정렬해주기
2. 첫번째 요소와 두번째 요소 차이(diff) 구하기(절대값)
3. 배열을 돌면서 차이가 diff와 동일한지 검사하기
📕코드
var canMakeArithmeticProgression = function (arr) {
arr.sort((x, y) => x - y);
let diff = Math.abs(arr[0] - arr[1]);
for (let i = 1; i < arr.length - 1; i++) {
if (diff !== Math.abs(arr[i] - arr[i + 1])) return false;
}
return true;
};
'자료구조&알고리즘 > 알고리즘' 카테고리의 다른 글
[LeetCode][JS] 1678번 Goal Parser Interpretation (1) | 2022.06.02 |
---|---|
[LeetCode][JS] 976번 Largest Perimeter Triangle (0) | 2022.05.27 |
[leetCode][JS] 1822번 Sign of the Product of an Array (0) | 2022.05.27 |
[LeetCode][JS] 1779번 Find Nearest Point That Has the Same X or Y Coordinate (0) | 2022.05.27 |
[LeetCode][JS] 1281번 Subtract the Product and Sum of Digits of an Integer (0) | 2022.05.26 |