Menu
Coddy logo textTech

요약 - 리스트 프로세서

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

challenge icon

챌린지

쉬움

사용자 정의 가능한 리스트 프로세서를 구축하여 고차 함수(higher-order functions)를 보여주는 유연한 데이터 처리 시스템을 만드세요. 여러분의 프로그램은 서로 다른 처리 함수를 생성하고, 데이터 리스트에 모든 연산을 적용할 수 있는 메인 프로세서 함수를 사용하게 됩니다.

  1. 쉼표로 구분된 숫자가 포함된 문자열 입력을 읽습니다 (예: "10,20,30,40")
  2. 첫 번째 연산 유형을 나타내는 문자열 입력을 읽습니다 ("multiply", "add", 또는 "subtract")
  3. 첫 번째 연산에 사용할 값을 나타내는 문자열 입력을 읽습니다 (예: "3")
  4. 두 번째 연산 유형을 나타내는 문자열 입력을 읽습니다 ("multiply", "add", 또는 "subtract")
  5. 두 번째 연산에 사용할 값을 나타내는 문자열 입력을 읽습니다 (예: "5")
  6. 첫 번째 입력을 개별 숫자로 분리하고 각각을 정수로 변환합니다
  7. 세 개의 연산 함수를 생성합니다:
    • multiplyBy - 두 개의 정수를 받아 첫 번째 정수에 두 번째 정수를 곱한 값을 반환합니다
    • addTo - 두 개의 정수를 받아 첫 번째 정수에 두 번째 정수를 더한 값을 반환합니다
    • subtractFrom - 두 개의 정수를 받아 첫 번째 정수에서 두 번째 정수를 뺀 값을 반환합니다
  8. 세 개의 매개변수를 받는 processListWithOperation이라는 메인 함수를 생성합니다:
    • 정수 리스트
    • 두 개의 정수를 받아 정수를 반환하는 함수
    • 연산에 사용할 정수 값
  9. processListWithOperation 함수는 제공된 값을 사용하여 리스트의 각 숫자에 주어진 함수를 적용하고, 그 결과로 새로운 리스트를 반환해야 합니다
  10. 원본 리스트에 첫 번째 연산을 적용한 다음, 첫 번째 연산의 결과에 두 번째 연산을 적용합니다
  11. 결과를 아래에 표시된 정확한 형식으로 출력합니다

예를 들어, 입력값이 "2,4,6", "multiply", "3", "add", "10"인 경우, 프로그램은 다음과 같이 출력해야 합니다:

Advanced List Processor
=======================
Original list: [2, 4, 6]
First operation: multiply by 3
After first operation: [6, 12, 18]
Second operation: add 10
Final result: [16, 22, 28]
Processing completed successfully

입력값이 "15,25,35", "subtract", "5", "multiply", "2"인 경우, 프로그램은 다음과 같이 출력해야 합니다:

Advanced List Processor
=======================
Original list: [15, 25, 35]
First operation: subtract 5
After first operation: [10, 20, 30]
Second operation: multiply by 2
Final result: [20, 40, 60]
Processing completed successfully

여러분의 프로그램은 연산 유형 입력에 따라 적절한 연산 함수를 processListWithOperation에 전달함으로써 고차 함수를 입증해야 합니다. 조건문을 사용하여 각 연산에 대해 어떤 함수를 전달할지 결정하세요. processListWithOperation 함수는 입력 리스트를 반복(iterate)하면서 각 요소에 제공된 값과 함께 주어진 함수를 적용하고, 결과를 새 리스트에 수집해야 합니다. 첫 번째 연산의 결과를 두 번째 연산의 입력으로 사용하여 연산을 순차적으로 적용하세요.

직접 해보기

import 'dart:io';

void main() {
  // 입력 읽기
  String? numbersInput = stdin.readLineSync();
  String? firstOperation = stdin.readLineSync();
  String? firstValue = stdin.readLineSync();
  String? secondOperation = stdin.readLineSync();
  String? secondValue = stdin.readLineSync();
  
  // 문자열 입력을 정수 리스트로 변환
  List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
  int firstOpValue = int.parse(firstValue!);
  int secondOpValue = int.parse(secondValue!);
  
  // TODO: 아래에 코드를 작성하세요
  // 세 가지 연산 함수 생성: multiplyBy, addTo, subtractFrom
  // processListWithOperation 함수 생성
  // 연산을 순차적으로 적용하고 결과 저장
  
  // 필요한 형식으로 결과 출력
  print('Advanced List Processor');
  print('=======================');
  print('Original list: $originalList');
  // 첫 번째 연산 및 결과 출력
  // 두 번째 연산 및 최종 결과 출력
  print('Processing completed successfully');
}

로직 & 흐름의 모든 레슨