Menu
Coddy logo textTech

리스트 뒤집기

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

때때로 리스트의 요소를 역순으로 확인해야 할 때가 있습니다. Dart는 원본 리스트를 변경하지 않고 리스트의 역순 뷰를 생성하는 .reversed 속성을 제공합니다.

.reversed 속성은 리스트 요소를 역순으로 나타내는 이터러블(iterable)을 반환합니다. 이는 마지막 요소가 첫 번째로 나타나고, 끝에서 두 번째 요소가 두 번째로 나타나는 식임을 의미합니다.

List<int> numbers = [1, 2, 3, 4, 5];

var reversedNumbers = numbers.reversed;
print(reversedNumbers);  // (5, 4, 3, 2, 1)

// 원본 리스트는 변경되지 않은 상태로 유지됩니다
print(numbers);  // [1, 2, 3, 4, 5]

중요한 세부 사항은 .reversed가 리스트가 아닌 반복 가능한 객체(iterable)를 반환한다는 점입니다. 리스트로 작업해야 하는 경우, .toList()를 사용하여 변환할 수 있습니다. 이 속성은 원본 리스트를 그대로 유지하면서 데이터를 역순으로 처리해야 할 때 특히 유용합니다.

challenge icon

챌린지

쉬움

도서 목록을 분석하여 원래 순서와 역순으로 모두 표시하는 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:

  1. 독서 목록의 제목을 나타내는 문자열 입력을 읽습니다.
  2. 도서 제목들을 나타내는 여러 개의 문자열 입력을 읽습니다 (빈 문자열이 입력될 때까지 계속 읽습니다).
  3. .reversed 속성을 사용하여 도서 목록의 역순 뷰(view)를 생성합니다.
  4. 아래에 표시된 정확한 형식으로 독서 목록 분석 결과를 출력합니다.

예를 들어, 독서 목록 제목이 "Summer Reading"이고 도서들이 "1984", "To Kill a Mockingbird", "The Great Gatsby"라면, 프로그램은 다음과 같이 출력해야 합니다:

Reading List: Summer Reading
Books in original order: (1984, To Kill a Mockingbird, The Great Gatsby)
Books in reversed order: (The Great Gatsby, To Kill a Mockingbird, 1984)
Total books: 3

독서 목록 제목이 "Quick Reads"이고 "Animal Farm"이라는 책 한 권만 제공된 경우, 프로그램은 다음과 같이 출력해야 합니다:

Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1

프로그램은 반드시 .reversed 속성을 사용하여 도서를 역순으로 표시해야 합니다. .reversed는 iterable을 반환하므로, 이를 출력할 때 대괄호가 아닌 소괄호와 함께 표시된다는 점을 기억하세요.

치트 시트

.reversed 속성을 사용하여 원본 리스트를 수정하지 않고 리스트 요소를 역순으로 볼 수 있습니다:

List<int> numbers = [1, 2, 3, 4, 5];

var reversedNumbers = numbers.reversed;
print(reversedNumbers);  // (5, 4, 3, 2, 1)

// 원본 리스트는 변경되지 않은 상태로 유지됩니다
print(numbers);  // [1, 2, 3, 4, 5]

.reversed 속성은 리스트가 아닌 iterable을 반환합니다. 다시 리스트로 변환하려면 .toList()를 사용하세요.

직접 해보기

import 'dart:io';

void main() {
  // 독서 목록 제목 읽기
  String? title = stdin.readLineSync();
  
  // 빈 문자열이 나올 때까지 책 제목 읽기
  List<String> books = [];
  String? book;
  while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
    books.add(book);
  }
  
  // TODO: 여기에 코드를 작성하세요
  // .reversed 속성을 사용하여 books 리스트의 역순 뷰를 생성하세요
  // 요구된 형식으로 출력을 프린트하세요
  
}
quiz icon실력 점검

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

로직 & 흐름의 모든 레슨