Menu
Coddy logo textTech

리스트 정렬

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

리스트의 요소를 정리해야 할 때, Dart는 요소를 오름차순으로 정렬하는 sort() 메서드를 제공합니다. 이 메서드는 이름을 알파벳 순서로 정렬하거나 숫자를 작은 것부터 큰 것 순으로 정렬할 때 특히 유용합니다.

sort() 메서드는 새로운 정렬된 리스트를 생성하는 대신 원본 리스트를 직접 수정합니다. 리스트에서 sort()를 호출하면, 기존 요소들을 제자리에서 재배치합니다.

List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names);  // ['Alice', 'Bob', 'Charlie']

List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores);  // [78, 85, 92, 96]

sort() 메서드는 문자열이나 숫자와 같은 일반적인 데이터 유형에 대해 자동으로 작동합니다. 문자열의 경우 알파벳 순으로 정렬하며, 숫자의 경우 가장 낮은 수에서 가장 높은 수의 순서로 정렬합니다. 이는 요소들을 예측 가능한 순서로 배치해야 할 때 데이터를 정리하기 위한 간편한 도구가 됩니다.

challenge icon

챌린지

쉬움

요리들을 서로 다른 카테고리로 정리하여 레스토랑 메뉴 시스템을 관리하는 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:

  1. 레스토랑 이름을 나타내는 문자열 입력을 읽습니다.
  2. 여러 개의 요리 이름을 나타내는 문자열 입력들을 읽습니다 (빈 문자열이 입력되면 종료됩니다).
  3. sort() 메서드를 사용하여 요리들을 알파벳 순서로 정렬합니다.
  4. 정리된 메뉴를 아래에 표시된 정확한 형식으로 출력합니다.

예를 들어, 레스토랑 이름이 "Bella Vista"이고 요리가 "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie"인 경우, 프로그램은 다음과 같이 출력해야 합니다:

Restaurant: Bella Vista
Original menu: [Pasta Carbonara, Caesar Salad, Grilled Salmon, Apple Pie]
Sorted menu: [Apple Pie, Caesar Salad, Grilled Salmon, Pasta Carbonara]
Total dishes: 4
Status: Menu organized alphabetically

레스토랑 이름이 "Quick Bites"이고 요리가 "Burger", "Pizza", "Sandwich"인 경우, 프로그램은 다음과 같이 출력해야 합니다:

Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabetically

레스토랑 이름이 "Cafe Corner"이고 요리가 "Coffee" 하나만 제공된 경우, 프로그램은 다음과 같이 출력해야 합니다:

Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabetically

프로그램은 반드시 sort() 메서드를 사용하여 요리를 알파벳 순으로 정렬해야 합니다. sort()는 원본 리스트를 직접 수정하므로, 원본 메뉴와 정렬된 메뉴를 모두 표시하려면 정렬하기 전에 원본 리스트의 복사본을 생성해야 한다는 점을 기억하세요.

치트 시트

sort() 메서드는 리스트 요소를 오름차순으로 정렬하며 원본 리스트를 직접 수정합니다:

List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names);  // ['Alice', 'Bob', 'Charlie']

List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores);  // [78, 85, 92, 96]

문자열의 경우, sort()는 요소를 알파벳 순서로 정렬합니다. 숫자의 경우, 낮은 수에서 높은 수 순으로 정렬합니다. sort()는 원본 리스트를 직접 수정하므로, 원래 순서를 유지해야 하는 경우 먼저 복사본을 만드세요.

직접 해보기

import 'dart:io';

void main() {
  // 레스토랑 이름 읽기
  String? restaurantName = stdin.readLineSync();
  
  // 빈 문자열이 나올 때까지 요리 이름 읽기
  List<String> dishes = [];
  String? dish;
  while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
    dishes.add(dish);
  }
  
  // TODO: 아래에 코드를 작성하세요
  // 원본 리스트의 복사본을 생성하고 정렬하기
  // 전체 요리 개수 계산하기
  // 요구된 출력 형식으로 출력하기
  
  // 결과 출력
  // print("Restaurant: $restaurantName");
  // print("Original menu: $dishes");
  // print("Sorted menu: $sortedDishes");
  // print("Total dishes: $totalDishes");
  // print("Status: Menu organized alphabetically");
}
quiz icon실력 점검

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

로직 & 흐름의 모든 레슨