챌린지: 성적 정렬하기
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 63번째.
챌린지
쉬움맵에서 학생 데이터를 처리하고, 합격한 학생을 필터링하며, 알파벳순으로 정리하는 종합적인 학생 성적 관리 시스템을 만드세요. 이 챌린지는 맵 순회, 조건부 필터링, 리스트 작업 및 정렬을 결합합니다.
다음과 같은 입력이 제공됩니다:
- 학생 이름(키)과 시험 점수(값)의 맵을 나타내는 JSON 문자열
JSON 문자열은 다음과 같습니다: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}
여러분의 과제는 다음과 같습니다:
- 적절한 Dart 메서드를 사용하여 JSON 문자열을 Map으로 파싱합니다
- 합격한 학생들의 이름을 저장할
passingStudents라는 빈 리스트를 생성합니다 - 맵을 순회하며 60점 이상을 받은 학생들의 이름을
passingStudents리스트에 추가합니다 sort()메서드를 사용하여passingStudents리스트를 알파벳순으로 정렬합니다- 시험을 치른 총 학생 수를 다음 형식으로 출력합니다:
Total students: X - 합격한 학생 수를 다음 형식으로 출력합니다:
Students who passed: X - 불합격한 학생 수를 다음 형식으로 출력합니다:
Students who failed: X - 합격한 학생들을 알파벳순으로 각각 새 줄에 다음 형식으로 출력합니다:
Passing student: [name] - 합격한 학생이 없으면 다음을 출력합니다:
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" 메시지를 출력하세요.
}로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구