Menu
Coddy logo textTech

챌린지: 성적 정렬하기

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

challenge icon

챌린지

쉬움

맵에서 학생 데이터를 처리하고, 합격한 학생을 필터링하며, 알파벳순으로 정리하는 종합적인 학생 성적 관리 시스템을 만드세요. 이 챌린지는 맵 순회, 조건부 필터링, 리스트 작업 및 정렬을 결합합니다.

다음과 같은 입력이 제공됩니다:

  • 학생 이름(키)과 시험 점수(값)의 맵을 나타내는 JSON 문자열

JSON 문자열은 다음과 같습니다: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

여러분의 과제는 다음과 같습니다:

  1. 적절한 Dart 메서드를 사용하여 JSON 문자열을 Map으로 파싱합니다
  2. 합격한 학생들의 이름을 저장할 passingStudents라는 빈 리스트를 생성합니다
  3. 맵을 순회하며 60점 이상을 받은 학생들의 이름을 passingStudents 리스트에 추가합니다
  4. sort() 메서드를 사용하여 passingStudents 리스트를 알파벳순으로 정렬합니다
  5. 시험을 치른 총 학생 수를 다음 형식으로 출력합니다: Total students: X
  6. 합격한 학생 수를 다음 형식으로 출력합니다: Students who passed: X
  7. 불합격한 학생 수를 다음 형식으로 출력합니다: Students who failed: X
  8. 합격한 학생들을 알파벳순으로 각각 새 줄에 다음 형식으로 출력합니다: Passing student: [name]
  9. 합격한 학생이 없으면 다음을 출력합니다: No students passed the exam

여러분의 프로그램은 적절한 맵 순회, 60점이라는 합격 기준에 따른 데이터 필터링을 위한 조건부 로직, 리스트 조작 및 정렬 작업을 보여주어야 합니다. 출력은 위에 명시된 정확한 형식과 일치해야 하며, 합격한 학생들은 알파벳순으로 나열되어야 합니다.

직접 해보기

import 'dart:io';
import 'dart:convert';

void main() {
  // JSON 문자열 입력을 읽습니다.
  String? jsonString = stdin.readLineSync();
  
  // JSON 문자열을 Map으로 파싱합니다.
  Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
  
  // 합격한 학생들을 저장할 빈 리스트를 생성합니다.
  List<String> passingStudents = [];
  
  // TODO: 아래에 코드를 작성하세요.
  // 1. Map을 반복하며 60점 이상을 받은 학생들을 필터링하세요.
  // 2. 합격한 학생의 이름을 passingStudents 리스트에 추가하세요.
  // 3. passingStudents 리스트를 알파벳 순으로 정렬하세요.
  // 4. 필요한 통계치를 계산하고 출력하세요.
  // 5. 지정된 형식으로 합격한 학생들을 출력하세요.
  
  // 결과 출력 (구현 내용으로 대체하세요)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // 합격한 학생 목록 또는 "No students passed the exam" 메시지를 출력하세요.
}

로직 & 흐름의 모든 레슨