리스트에 추가: insert
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 4번째.
리스트의 특정 위치에 요소를 추가해야 할 때, insert() 메서드는 새 요소가 들어갈 위치를 정밀하게 제어할 수 있게 해줍니다. 항상 리스트의 끝에 요소를 추가하는 add() 메서드와 달리, insert()를 사용하면 원하는 어떤 위치에든 요소를 배치할 수 있습니다.
insert() 메서드는 두 개의 매개변수를 받습니다: 요소를 삽입하려는 인덱스 위치와 요소 자체입니다. 요소를 삽입하면 해당 위치와 그 이후의 모든 기존 요소가 오른쪽으로 한 칸씩 이동합니다.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// 시작 부분(인덱스 0)에 새로운 작업 삽입
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']이 메서드는 우선순위 목록, 일정 또는 특정 순서를 유지해야 하는 모든 상황과 같이 요소의 순서가 중요한 경우에 특히 유용합니다. 어느 위치에나 삽입할 수 있는 기능 덕분에 insert()는 정렬된 컬렉션을 관리하는 데 강력한 도구가 됩니다.
챌린지
쉬움기존 작업 목록의 특정 위치에 긴급한 작업을 삽입하여 우선순위 작업 시스템을 관리하는 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:
- 작업 목록 이름을 나타내는 문자열 입력을 읽습니다.
- 기존 작업들을 나타내는 여러 문자열 입력을 읽습니다 (빈 문자열이 입력될 때까지 계속 읽습니다).
- 삽입할 긴급 작업을 나타내는 문자열 입력을 읽습니다.
- 긴급 작업이 삽입될 위치를 나타내는 정수 입력을 읽습니다.
insert()메서드를 사용하여 지정된 위치에 긴급 작업을 추가합니다.- 아래에 표시된 정확한 형식으로 업데이트된 작업 목록을 출력합니다.
예를 들어, 작업 목록 이름이 "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에서 기존 작업 목록의 길이 사이)로 제공됩니다.
치트 시트
insert() 메서드를 사용하면 리스트의 특정 위치에 요소를 추가할 수 있습니다. 이 메서드는 인덱스 위치와 삽입할 요소라는 두 개의 매개변수를 받습니다.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// 인덱스 0(시작 부분)에 삽입
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']요소를 삽입하면 해당 위치와 그 이후의 모든 기존 요소가 오른쪽으로 한 칸씩 이동합니다. 이 메서드는 위치가 중요한 정렬된 컬렉션을 유지하는 데 유용합니다.
직접 해보기
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()!);
// TODO: 아래에 코드를 작성하세요
// insert() 메서드를 사용하여 지정된 위치에 긴급 작업을 추가하세요
// 요구된 형식으로 결과 출력
print('Task List: $taskListName');
print('Original tasks: $tasks');
print('Inserted: $urgentTask at position $position');
// 업데이트된 작업 및 총 개수 출력
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구