내배캠 사전캠프

성적관리 시스템 제작하기

yjuni22 2024. 9. 23. 17:24

컬렉션의 개념

 

Array(정렬) : 데이터를 순서대로 저장하는 컬렉션

let numsArray: Array<Int> = [1,2,3,4,5]

- 배열의 인덱스는 0부터 자동으로 순서가 지정됨

- 데이터(요소)는 중복 가능

- 한 개의 배열에는 동일한 데이터 타입만 가능

 

Dictionary(딕셔너리): 데이터를 키와 값으로 하나의 쌍으로 만들어 관리하는 순서가 없는 컬렉션

let dic: Dictionary<String, String> = ["A":"Apple","B":"Banana"]

- 키값은 중복x, 밸류값은 중복가능

- 동일한 타입 쌍의 데이터만 가능

 

Set (집합) : 수학에서의 집합과 비슷한 연산을 제공하는, 순서가 없는 컬렉션

let set: Set<Int> = [1,1,2,3]

 

 

sorted()와 sort()의 차이점 정리

https://didu-story.tistory.com/206

 

1. 학생을 등록해요.

var students: [String: String] = [:]
students["001"] = "영희"
students["002"] = "철수"

 

2. 과목을 관리해요.

var subjects: [String: Set<String>] = [:]
subjects["철수"] = ["수학,"과학","영어"]
subjects["영희"] = ["수학","역사"]

//과목추가
subjects["철수"]?.insert("역사")

//과목삭제
subjects["영희"]?.remove("역사")

 

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

 

var grades: [String: [String: [Int]]] = [:]
grades["철수"] = ["수학": [90, 85], "과학": [90], "영어": [90]]
grades["영희"] = ["수학": [75], "역사": [80]]

//성적 추가
grades["철수"]?["수학"]?.append(80)

//성적 삭제
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: "월수", subject: "수학") {
    print("월수의 수학 평균점수: \(average)")
} else {
    print("월수의 수학점수가 없습니다")
}