Swift / 성적 관리 시스템 제작하기

iOS 5기 사전캠프 퀘스트 진행


Swift 기본 컬렉션 타입

Array(배열) 타입

  • Array는 멤버가 순서(인덱스)를 가진 리스트 형태의 컬렉션 타입이다
  • Array 선언
var intergers: Array<Int> = Array<Int>()
// var intergers: Array<Int> = [Int]()
// var intergers: Array<Int> = []
// var intergers: [Int] = Array<Int>()
// var intergers: [Int] = [Int]() 모두 같은 표현
  • Array 활용
intergers.append(1) // Array에 멤버 추가
intergers.contains(1) // true, Array 내에 멤버가 있는지 확인
intergers[0] = 100 // 0번째 멤버 변경
intergers.remove(at: 0) // 0번째 멤버 삭제, .removeAll(), .removeLast() 등의 메소드도 있다
intergers.count // Array 내부의 멤버 수 확인

Dictionary 타입

  • Dictionary는 Key와 Value의 쌍으로 이루어진 컬렉션 타입이다
  • Dictionary 선언
var anyDIctionary: Dictionary<String, Any> = [String: Any]()
// var anyDIctionary: Dictionary<String, Any> = Dictionary<String, Any>()
// var anyDIctionary: Dictionary<String, Int> = [:]
// var anyDIctionary: [String: Any] = [:] 모두 같은 표현
  • Dictionary 활용
anyDictionary["someKey"] = "value" // Key와 Value의 값을 할당
anyDictionary["someKey"] = "dictionary" // Key의 Value값 변경
anyDictionary.removeValue(forKey: "someKey"] // Key에 해당하는 값 제거
anyDictionary["someKey"] = nil

Set 타입

  • Set은 순서가 없고, 멤버가 유일한 것을 보장하는 컬렉션 타입이다
  • Set 선언
    var intergerSet: Set<Int> = Set<Int>()
  • Set 활용
intergerSet.insert(1) // Set에 멤버 할당
intergerSet.insert(1) // 이미 1 이라는 멤버가 있으므로 유효하지 않음
intergerSet.contains(1) // true
intergerSet.remove(1) // 특정 멤버 제거
intergerSet.removeFirst() // 첫번째 멤버 제거
interger.union(Set타입) // 두 Set타입의 합집합
interger.sorted() // 오름차순 정렬
interger.intersection(Set타입) // 두 Set타입의 교집합
interger.subtracting(Set타입) // 두 Set타입의 차집합

-퀘스트 진행-

// iOS 5기 사전캠프 퀘스트 2번
var dictionary: Dictionary<Int, String> = [1: "르탄이", 2: "배캠이", 3: "크루아"]

var student1SubjectSet: Set<String> = []
var student2SubjectSet: Set<String> = []
var student3SubjectSet: Set<String> = []

func insertSubject(to studentNumber: Int, in subjectName: String) {
    switch studentNumber {
    case 1:
        student1SubjectSet.insert(subjectName)
    case 2:
        student2SubjectSet.insert(subjectName)
    case 3:
        student3SubjectSet.insert(subjectName)
    default:
        print("\(studentNumber)는 존재하지 않는 학생번호 입니다.")
    }
}

func deleteSubject(to studentNumber: Int, in subjectName: String) {
    switch studentNumber {
    case 1:
        student1SubjectSet.remove(subjectName)
    case 2:
        student2SubjectSet.remove(subjectName)
    case 3:
        student3SubjectSet.remove(subjectName)
    default:
        print("\(studentNumber)는 존재하지 않는 학생번호 입니다.")
    }
}

var student1Grade: Array<Int> = []
var student2Grade: Array<Int> = []
var student3Grade: Array<Int> = []

func insertGrade(to studentNumber: Int, in grade: Int) {
    switch studentNumber {
    case 1:
        student1Grade.append(grade)
    case 2:
        student2Grade.append(grade)
    case 3:
        student3Grade.append(grade)
    default:
        print("\(studentNumber)는 존재하지 않는 학생번호 입니다.")
    }
}

func deleteGrade(to studentNumber: Int, in grade: Int) {
    switch studentNumber {
    case 1:
        student1Grade.removeLast()
    case 2:
        student2Grade.removeLast()
    case 3:
        student3Grade.removeLast()
    default:
        print("\(studentNumber)는 존재하지 않는 학생번호 입니다.")
    }
}


func studentGradeAverage(to studentNumber: Int) -> String {
    var studentAverage: Int = 0
    
    switch studentNumber {
    case 1:
        for average in student1Grade {
            studentAverage += average
        }
        studentAverage = studentAverage / student1Grade.count
    case 2:
        for average in student2Grade {
            studentAverage += average
        }
        studentAverage = studentAverage / student2Grade.count
    case 3:
        for average in student3Grade {
            studentAverage += average
        }
        studentAverage = studentAverage / student3Grade.count
    default:
        return "\(studentNumber)번은 존재하지 않는 학생번호 입니다."
    }
    
    return "\(dictionary[studentNumber]!)의 평균 성적은 \(studentAverage)점 입니다."
}

insertSubject(to: 1, in: "수학")
insertSubject(to: 1, in: "과학")
insertSubject(to: 1, in: "영어")
insertSubject(to: 1, in: "국어")

deleteSubject(to: 1, in: "국어")
print(student1SubjectSet)

insertGrade(to: 1, in: 80)
insertGrade(to: 1, in: 90)
insertGrade(to: 1, in: 85)
insertGrade(to: 1, in: 100)

deleteGrade(to: 1, in: 100)
print(student1Grade)

print(studentGradeAverage(to: 1))
profile
이유있는 코드를 쓰자!!

0개의 댓글