반응형
[TypeScript] 배열에서 최소값(Min)과 최대값(Max) 구하는 방법
📌 TypeScript에서 배열의 최소값과 최대값 구하는 방법
TypeScript에서 number[] 배열의 최소값과 최대값을 구하는 여러 가지 방법이 있습니다. 🚀
✅ 1️⃣ Math.min() 및 Math.max() 사용 (Spread Operator 활용)
가장 간단한 방법은 Math.min()과 Math.max()를 Spread Operator (...) 와 함께 사용하는 것입니다.
const nums: number[] = [5, 2, 8, 1, 3];
const minVal = Math.min(...nums);
const maxVal = Math.max(...nums);
console.log(minVal, maxVal); // 출력: 1 8
✅ 장점:
- 코드가 짧고 직관적
- 작은 배열에서는 매우 효과적
❌ 단점:
- 배열 크기가 매우 클 경우 Math.min(...nums)는 스택 오버플로우가 발생할 수 있음
✅ 2️⃣ reduce() 함수 사용 (최적화 가능)
reduce()를 사용하면 배열을 한 번만 순회(O(N))하면서 최소값과 최대값을 찾을 수 있습니다.
const nums: number[] = [5, 2, 8, 1, 3];
const minVal = nums.reduce((min, curr) => Math.min(min, curr), Infinity);
const maxVal = nums.reduce((max, curr) => Math.max(max, curr), -Infinity);
console.log(minVal, maxVal); // 출력: 1 8
✅ 장점:
- 대량의 데이터에서도 안전하게 작동 (스택 오버플로우 위험 없음)
- reduce()는 배열이 비어 있어도 기본값(Infinity, -Infinity)을 설정 가능
❌ 단점:
- 코드가 Math.min(...nums)보다 약간 더 길어짐
✅ 3️⃣ for 루프 사용 (가장 빠름, O(N))
반복문을 사용하여 최소값과 최대값을 직접 비교하면서 구하는 것이 가장 효율적입니다.
const nums: number[] = [5, 2, 8, 1, 3];
let minVal = Infinity;
let maxVal = -Infinity;
for (const num of nums) {
if (num < minVal) minVal = num;
if (num > maxVal) maxVal = num;
}
console.log(minVal, maxVal); // 출력: 1 8
✅ 장점:
- 대량 데이터에서도 가장 효율적 (O(N))
- Math.min()이나 reduce()보다 성능이 뛰어남
❌ 단점:
- Math.min(...nums)보다 코드가 약간 더 길어질 수 있음
✅ 4️⃣ sort() 사용 (비효율적, O(N log N))
배열을 정렬한 후 첫 번째와 마지막 요소를 선택하는 방법도 있지만, 비효율적이므로 추천하지 않습니다.
const nums: number[] = [5, 2, 8, 1, 3];
const sorted = nums.sort((a, b) => a - b);
const minVal = sorted[0];
const maxVal = sorted[sorted.length - 1];
console.log(minVal, maxVal); // 출력: 1 8
❌ 단점:
- 정렬 과정에서 불필요한 연산(O(N log N)) 발생
- 단순히 최소/최대값을 찾는 데에는 비효율적
✅ 대신 정렬이 필요한 상황이라면 유용할 수 있음
📌 최적의 방법 선택 가이드
방법 코드 시간 복잡도 특징
Math.min(...arr) | Math.min(...nums) | O(N) | 간단하지만 큰 배열에서 성능 문제 발생 가능 ⚠️ |
reduce() | nums.reduce((min, curr) => Math.min(min, curr), Infinity) | O(N) | 배열이 비어 있어도 안전하게 처리 가능 ✅ |
for 루프 | for (const num of nums) { ... } | O(N) | 가장 빠르고 효율적 (추천) 🚀 |
sort() 후 인덱스 접근 | nums.sort((a, b) => a - b)[0] | O(N log N) | 불필요한 정렬 과정 포함 (비추천) ❌ |
✅ 배열이 작다면 Math.min(...nums), 크다면 reduce() 또는 for 루프를 추천! 🚀
📌 최종 정리
- 배열의 최소값: Math.min(...nums), reduce(), for 루프 중 선택
- 배열의 최대값: Math.max(...nums), reduce(), for 루프 중 선택
- 대량 데이터에서는 for 루프가 가장 빠름
- 정렬(sort())은 비효율적이므로 사용하지 않는 것이 좋음
💡 이제 TypeScript에서 number[] 배열의 최소값과 최대값을 효과적으로 찾을 수 있습니다! 🚀
반응형
'programing > TypeScript' 카테고리의 다른 글
[JavaScript/TypeScript] -0과 0의 차이와 처리 방법 (0) | 2025.03.12 |
---|---|
[TypeScript] Map 사용법 정리 - 키-값 기반 데이터 관리 (0) | 2025.03.11 |
[TypeScript] Set 사용법 정리 - 중복 없는 데이터 관리 (0) | 2025.03.11 |