Menu
CoddyTech

요약 - 데이터 필터링

Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨. 65개 중 16번째.

challenge icon

챌린지

쉬움

수치 데이터셋을 필터링, 변환 및 처리하여 데이터 분석 파이프라인을 관리하는 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:

  1. 데이터셋 이름을 나타내는 문자열 입력을 읽습니다.
  2. 원시 데이터 값을 나타내는 여러 개의 정수 입력을 읽습니다 (입력은 -1을 받으면 종료됩니다).
  3. 필터링을 위한 최소값 임계값(threshold)을 나타내는 정수 입력을 읽습니다.
  4. where() 메서드를 사용하여 임계값보다 큰 값들을 필터링합니다.
  5. map() 메서드를 사용하여 필터링된 각 값을 제곱합니다.
  6. toList() 메서드를 사용하여 최종 결과를 리스트로 변환합니다.
  7. 아래에 표시된 정확한 형식으로 데이터 처리 결과를 출력합니다.

예를 들어, 데이터셋 이름이 "Sales Data"이고, 원시 값이 2, 5, 1, 8, 3, 6이며, 임계값이 3인 경우 프로그램은 다음과 같이 출력해야 합니다:

Dataset: Sales Data
Raw data: [2, 5, 1, 8, 3, 6]
Threshold: 3
Filtering values > 3
Filtered values: (5, 8, 6)
Squaring filtered values
Squared values: (25, 64, 36)
Final processed data: [25, 64, 36]
Processing complete: 3 values processed

데이터셋 이름이 "Temperature Readings"이고, 원시 값이 1, 2이며, 임계값이 5인 경우 프로그램은 다음과 같이 출력해야 합니다:

Dataset: Temperature Readings
Raw data: [1, 2]
Threshold: 5
Filtering values > 5
Filtered values: ()
Squaring filtered values
Squared values: ()
Final processed data: []
Processing complete: 0 values processed

데이터셋 이름이 "Performance Metrics"이고, 원시 값이 4, 7, 9이며, 임계값이 2인 경우 프로그램은 다음과 같이 출력해야 합니다:

Dataset: Performance Metrics
Raw data: [4, 7, 9]
Threshold: 2
Filtering values > 2
Filtered values: (4, 7, 9)
Squaring filtered values
Squared values: (16, 49, 81)
Final processed data: [16, 49, 81]
Processing complete: 3 values processed

프로그램은 반드시 다음 순서대로 연산을 체이닝해야 합니다: 먼저 where()를 사용하여 임계값보다 큰 값을 필터링하고, 그 다음 map()을 사용하여 필터링된 각 값을 제곱하며, 마지막으로 toList()를 사용하여 결과를 리스트로 변환합니다. 중간 결과는 괄호 형태의 iterable 형식으로 표시되어야 하며, 최종 리스트는 대괄호 형식으로 표시되어야 합니다.

직접 해보기

import 'dart:io';

void main() {
  // 데이터셋 이름 읽기
  String? datasetName = stdin.readLineSync();
  
  // -1이 입력될 때까지 원시 데이터 값 읽기
  List<int> rawData = [];
  while (true) {
    int value = int.parse(stdin.readLineSync()!);
    if (value == -1) break;
    rawData.add(value);
  }
  
  // 임계값 읽기
  int threshold = int.parse(stdin.readLineSync()!);
  
  // 초기 정보 표시
  print('Dataset: $datasetName');
  print('Raw data: $rawData');
  print('Threshold: $threshold');
  print('Filtering values > $threshold');
  
  // TODO: 아래에 코드를 작성하세요
  // where()를 사용하여 임계값보다 큰 값을 필터링하세요
  // map()을 사용하여 필터링된 각 값을 제곱하세요
  // toList()를 사용하여 결과를 리스트로 변환하세요
  
  // 필요한 형식으로 결과 출력
  // 필터링된 값을 괄호 형식으로 표시해야 함을 기억하세요
  // 제곱된 값을 괄호 형식으로 표시하세요
  // 최종 처리된 데이터를 대괄호 형식으로 표시하세요
  // 개수와 함께 처리 완료 메시지를 출력하세요
}

로직 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 Dart 컴파일러