사전캠프_2. 성적 관리 시스템 제작하기

동그라미·2024년 10월 17일
0

컬렉션(Collection)


  • Array: 동일한 타입의 요소들을 저장하는 순서가 있는 컬렉션. 특정 요소의 인덱스를 사용하여 접근할 수 있고 수정할 수 있으며 배열의 크기는 동적으로 조절됩니다.
  • Dictionary: 순서를 정의하지 않고 같은 타입의 key와 같은 타입의 value를 저장하는 컬렉션. key는 고유(unique)해야하므로 중복을 허용하지 않으며, 실물 사전을 찾는 것처럼 순서가 아닌 식별자 기준으로 값을 찾을 때 Dictionary를 사용합니다.
  • Set: 순서를 정의하지 않고 동일한 타입의 값을 저장하는 컬렉션. 세트 안에 있는 모든 값은 고유(unique)해야하므로 중복을 허용하지 않습니다. 항목의 순서가 중요하지 않거나 항목이 한 번만 표시되도록 해야 하는 경우 사용합니다.

1. 학생을 등록해요.

  • 학생 이름과 ID를 입력받아 Dictionary에 등록하세요.
  • 예: ["001": "르탄이", "002": "배캠"]
var students:[String: String] = [:]
students["001"] = "르탄이"
students["002"] = "배캠이"

여기서 특정값의 이름만 데려오고 싶다면
print(students["002"]!)를 마지막줄에 넣어주면

2. 과목을 관리해요.

  • 학생이 듣는 과목들을 Set으로 관리하세요.
  • 과목 추가, 삭제 기능을 구현하세요.
    • 예: 르탄이의 과목: ["수학", "과학", "영어"]
var subjects: [String: Set<String>] = [:]
subjects["르탄이"] = ["수학", "과학", "영어"]
subjects["배캠이"] = ["수학", "역사"]

3. 과목 별 성적을 관리해요.

  • 각 과목의 성적을 Array로 관리하세요.
  • 성적 추가, 삭제, 수정 기능을 구현하세요.
    • 예: 르탄이의 수학 성적: [80, 90, 85]

과목추가

subjects["르탄이"]?.insert("역사")


과목삭제

subjects["배캠이"]?.remove("역사")


성적관리

var grades: [String: [String: [Int]]] = [:]
grades["르탄이"] = ["수학": [90, 85], "과학": [88], "영어": [70]]
grades["배캠이"] = ["수학": [75], "역사": [80]]


성적추가

grades["르탄이"]?["수학"]?.append(95)

성적삭제

grades["배캠이"]?["수학"]?.removeLast()

4. 학생의 성적 평균

  • 특정 학생(예: 르탄이)의 성적 평균을 계산하는 함수를 만드세요.
func calculateAverage(for student: String, subject: String) -> Double? {
    guard let studentGrades = grades[student], let subjectGrades = studentGrades[subject] else {
        return nil
    }
    let total = subjectGrades.reduce(0, +)
    return Double(total) / Double(subjectGrades.count)
}

if let average = calculateAverage(for: "Alice", subject: "Math") {
    print("Alice's Math average: \(average)")
} else {
    print("No grades found for Alice in Math.")
}
profile
맨날 최선을 다하지는 마러라. 피곤해서 못산다.
post-custom-banner

0개의 댓글