Menu
CoddyTech

리스트에 추가: insert

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

목록의 특정 위치에 요소를 추가해야 할 때 insert() 메서드를 사용하면 새 요소가 들어갈 위치를 정확하게 제어할 수 있습니다. 요소를 항상 목록의 끝에 추가하는 add() 메서드와 달리, insert()를 사용하면 원하는 위치에 요소를 배치할 수 있습니다.

insert() 메서드는 두 개의 매개변수를 받습니다. 요소를 삽입하려는 인덱스 위치와 요소 자체입니다. 요소를 삽입하면 해당 위치와 그 이후에 있는 기존 요소가 모두 오른쪽으로 한 칸씩 이동합니다.

List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];

// 새 작업을 맨 앞에 삽입합니다 (index 0)
tasks.insert(0, 'Check emails');

print(tasks);  // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']

이 메서드는 우선순위 목록이나 일정처럼 요소의 순서가 중요하거나 특정 순서를 유지해야 하는 모든 상황에서 특히 유용합니다. 어느 위치에나 삽입할 수 있으므로 insert()는 순서가 있는 컬렉션을 관리하는 강력한 도구입니다.

challenge icon

챌린지

쉬움

기존 작업 목록의 지정된 위치에 긴급 작업을 삽입하여 우선순위 작업 시스템을 관리하는 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다.

  1. 작업 목록 이름을 나타내는 문자열 입력을 읽습니다.
  2. 기존 작업을 나타내는 여러 문자열 입력을 읽습니다(빈 문자열을 입력하면 입력이 끝납니다).
  3. 삽입할 긴급 작업을 나타내는 문자열 입력을 읽습니다.
  4. 긴급 작업을 삽입할 위치를 나타내는 정수 입력을 읽습니다.
  5. 지정된 위치에 긴급 작업을 추가하기 위해 insert() 메서드를 사용합니다.
  6. 아래에 표시된 정확한 형식으로 업데이트된 작업 목록을 출력합니다.

예를 들어, 작업 목록 이름이 "Work Schedule"이고, 기존 작업이 "Review documents", "Team meeting", "Submit report"이며, 긴급 작업이 "Client call"이고 위치가 1이라면 프로그램은 다음을 출력해야 합니다.

Task List: Work Schedule
Original tasks: [Review documents, Team meeting, Submit report]
Inserted: Client call at position 1
Updated tasks: [Review documents, Client call, Team meeting, Submit report]
Total tasks: 4

작업 목록 이름이 "Daily Goals"이고, 기존 작업이 "Exercise", "Read book"이며, 긴급 작업이 "Buy groceries"이고 위치가 0이라면 프로그램은 다음을 출력해야 합니다.

Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3

프로그램은 지정된 위치에 긴급 작업을 추가하기 위해 insert() 메서드를 사용해야 합니다. 위치 입력은 항상 유효한 인덱스(0부터 기존 작업 목록의 길이까지)입니다.

필수 출력 형식:

직접 해보기

import 'dart:io';

void main() {
  // 작업 목록 이름을 입력받습니다
  String? taskListName = stdin.readLineSync();
  
  // 빈 문자열이 나올 때까지 기존 작업을 입력받습니다
  List<String> tasks = [];
  while (true) {
    String? task = stdin.readLineSync();
    if (task == null || task.isEmpty) {
      break;
    }
    tasks.add(task);
  }
  
  // 긴급 작업과 위치를 입력받습니다
  String? urgentTask = stdin.readLineSync();
  int position = int.parse(stdin.readLineSync()!);
  
  // 삽입하기 전에 원래 작업 목록을 저장합니다
  String originalTasks = tasks.toString();
  
  // TODO: 아래에 코드를 작성하세요
  // insert() 메서드를 사용해 지정된 위치에 긴급 작업을 추가하세요
  
  // 요구된 형식으로 결과를 출력하세요
  print('Task List: $taskListName');
  print('Original tasks: $originalTasks');
  print('Inserted: $urgentTask at position $position');
  // 업데이트된 작업 목록과 총개수를 출력하세요
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 & 흐름의 모든 레슨

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