Menu
CoddyTech

요약 - 리스트 프로세서

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

challenge icon

챌린지

쉬움

사용자 지정 가능한 리스트 프로세서를 만들어 고차 함수를 보여 주는 유연한 데이터 처리 시스템을 구현하세요. 프로그램은 여러 처리 함수를 만들고, 데이터 리스트에 어떤 연산이든 적용할 수 있는 메인 프로세서 함수를 사용합니다.

  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 함수는 입력 리스트를 순회하며, 제공된 값을 사용해 각 요소에 주어진 함수를 적용하고 결과를 새 리스트에 모아야 합니다. 연산은 순차적으로 적용하며, 두 번째 연산의 입력으로 첫 번째 연산의 결과를 사용하세요.

직접 해보기

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');
}

로직 & 흐름의 모든 레슨

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