728x90
반응형
91. CSV 파일 읽기: CSV 파일을 읽어 각 행을 리스트로 변환하세요.
문제
CSV 파일에서 데이터를 읽어와 각 행을 리스트로 변환하는 프로그램을 작성하세요.
풀이
Dart의 dart:io와 dart:convert 패키지를 사용하여 CSV 파일을 읽고, 데이터를 처리할 수 있습니다.
import 'dart:io';
import 'dart:convert';
Future<List<List<String>>> readCsv(String filePath) async {
final file = File(filePath);
final lines = await file.readAsLines();
return lines.map((line) => line.split(',')).toList();
}
void main() async {
final csvData = await readCsv('data.csv');
print(csvData);
}
설명
- File 클래스를 사용해 CSV 파일의 내용을 읽습니다.
- readAsLines 메서드는 파일을 줄 단위로 읽어 리스트로 반환합니다.
- 각 줄을 split(',')을 통해 콤마로 분리하여 리스트로 변환합니다.
92. CSV 파일 쓰기: 리스트를 CSV 형식으로 변환하여 파일에 저장하세요.
문제
리스트 데이터를 CSV 형식으로 변환하여 파일에 저장하는 프로그램을 작성하세요.
풀이
Dart의 dart:io 패키지를 사용하여 데이터를 CSV 파일로 저장할 수 있습니다.
import 'dart:io';
Future<void> writeCsv(String filePath, List<List<String>> data) async {
final file = File(filePath);
final csvData = data.map((row) => row.join(',')).join('\n');
await file.writeAsString(csvData);
}
void main() async {
final data = [
['Name', 'Age', 'City'],
['Alice', '30', 'New York'],
['Bob', '25', 'San Francisco'],
['Charlie', '35', 'Los Angeles']
];
await writeCsv('output.csv', data);
print("CSV 파일 저장 완료");
}
설명
- 데이터를 CSV 형식으로 변환하기 위해 각 리스트의 요소를 join(',')을 통해 결합합니다.
- 줄바꿈(\n)을 사용하여 각 행을 구분합니다.
- 변환된 데이터를 파일에 저장합니다.
93. 데이터 필터링: 데이터 리스트에서 특정 조건을 만족하는 항목만 필터링하여 출력하세요.
문제
주어진 리스트에서 특정 조건을 만족하는 데이터만 필터링하여 출력하는 프로그램을 작성하세요.
풀이
Dart의 where 메서드를 사용하여 리스트에서 조건을 만족하는 항목만 필터링할 수 있습니다.
void main() {
final data = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
];
final filteredData = data.where((person) => person['age']! > 30).toList();
print(filteredData);
}
설명
- where 메서드를 사용해 각 항목을 조건에 따라 필터링합니다.
- age가 30보다 큰 항목들만 필터링하여 새로운 리스트로 반환합니다.
94. 데이터 정렬: 데이터를 정렬하여 출력하세요.
문제
리스트 데이터를 특정 필드를 기준으로 정렬하여 출력하는 프로그램을 작성하세요.
풀이
Dart의 sort 메서드를 사용하여 데이터를 특정 기준에 따라 정렬할 수 있습니다.
void main() {
final data = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
];
data.sort((a, b) => a['age']!.compareTo(b['age']!));
print(data);
}
설명
- sort 메서드는 리스트를 제자리에서 정렬합니다.
- 여기서는 age 필드를 기준으로 데이터를 오름차순으로 정렬합니다.
95. 데이터 통계 계산하기: 데이터의 평균, 중앙값, 표준편차를 계산하여 출력하세요.
문제
주어진 숫자 리스트에서 평균, 중앙값, 표준편차를 계산하여 출력하는 프로그램을 작성하세요.
풀이
Dart에서 기본적인 통계 계산은 직접 구현할 수 있습니다.
import 'dart:math';
double calculateMean(List<int> data) {
final sum = data.reduce((a, b) => a + b);
return sum / data.length;
}
double calculateMedian(List<int> data) {
data.sort();
final mid = data.length ~/ 2;
return (data.length % 2 == 0)
? (data[mid - 1] + data[mid]) / 2
: data[mid].toDouble();
}
double calculateStdDev(List<int> data) {
final mean = calculateMean(data);
final sumOfSquaredDiffs =
data.map((value) => pow(value - mean, 2)).reduce((a, b) => a + b);
return sqrt(sumOfSquaredDiffs / data.length);
}
void main() {
final data = [10, 20, 30, 40, 50];
final mean = calculateMean(data);
final median = calculateMedian(data);
final stdDev = calculateStdDev(data);
print("평균: $mean");
print("중앙값: $median");
print("표준편차: $stdDev");
}
설명
- calculateMean: 리스트의 평균을 계산합니다.
- calculateMedian: 리스트의 중앙값을 계산합니다. 리스트를 정렬한 후, 홀수 길이 리스트의 경우 중앙값을 반환하고, 짝수 길이 리스트의 경우 중간 두 값의 평균을 반환합니다.
- calculateStdDev: 평균과의 차이 제곱의 평균으로 표준편차를 계산합니다.
공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
728x90
반응형
'Dart > Dart 100제' 카테고리의 다른 글
Dart 100제 96 ~ 100 (웹 개발) (0) | 2024.08.27 |
---|---|
Dart 100제 86 ~ 90 (실용문제) (0) | 2024.08.26 |
Dart 100제 81 ~ 85 (기타) (0) | 2024.08.26 |
Dart 100제 71 ~ 75 (라이브러리와 패키지) (0) | 2024.08.11 |
Dart 100제 66 ~ 70 (예외 처리) (0) | 2024.08.11 |