반응형
How to sum an array of numbers using reduce() ?
reduce()를 이용하여 배열 값을 더하는 방법은 다음과 같습니다.
let numbers = [1, 2, 5, 14, 26]
let total = numbers.reduce(0, +)
지난번 포스팅한, 딕셔너리를 이용한 '학생의 평균 점수 및 과목별 평균 점수 계산하기' 문제를 reduce()를 활용하여 다시 풀어보겠습니다.
1. 학생을 무제한 입력받는다.
2. 학생 데이터 - 학생 이름, ios, Android, Web 과목의 성적을 학점으로 입력받는다.
3. 입력이 끝나면
3-1. 각 학생의 이름, 과목별 성적, 평균 평점을 계산하여 출력한다.
3-2. 전체 학생의 과목별 성적 평균을 계산하여 출력한다.
1. 딕셔너리를 만든다.
var students:[String:[Double]] = [:]
2. 입력 값이 없을 때 까지 학생의 이름과 과목별 성적을 입력받는다.
while true{
print("학생 이름: ", terminator:"" )
var input_name = readLine()
var name = String(input_name!)
if input_name != ""{
var double_array:[Double] = []
print("ios 성적: ", terminator:"" )
var input_ios = readLine()
print("android 성적: ", terminator:"" )
var input_android = readLine()
print("web 성적: ", terminator:"" )
var input_web = readLine()
var input2 = Double(input_ios!)!
double_array.append(input2)
var input3 = Double(input_android!)!
double_array.append(input3)
var input4 = Double(input_web!)!
double_array.append(input4)
students[name] = double_array
}else{
break
}
}
3. 과목별 성적의 합을 선언 및 초기화한다.
var total:Double = 0.0
var total2:Double = 0.0
var total3:Double = 0.0
4. 학생의 이름과 과목별 점수를 더한다. ⭐️reduce() ⭐️
for (key, value) in students {
print(key, value)
print("\(key)의 평균 = \((value.reduce(0, +))/3)")
total += Double(value[0])
total2 += Double(value[1])
total3 += Double(value[2])
}
5. 입력된 학생의 수를 계산하여 과목별 평균을 계산한다.
var student_count = Double(students.count)
print("---- 전체 성적 평균 ----")
print("ios 성적 평균 = \((total)/student_count)")
print("android 성적 평균 = \((total2)/student_count)")
print("web 성적 평균 = \((total3)/student_count)")
전체 코드는 다음과 같습니다.
import Foundation
var students:[String:[Double]] = [:]
while true{
print("학생 이름: ", terminator:"" )
var input_name = readLine()
var name = String(input_name!)
if input_name != ""{
var double_array:[Double] = []
print("ios 성적: ", terminator:"" )
var input_ios = readLine()
print("android 성적: ", terminator:"" )
var input_android = readLine()
print("web 성적: ", terminator:"" )
var input_web = readLine()
var input2 = Double(input_ios!)!
double_array.append(input2)
var input3 = Double(input_android!)!
double_array.append(input3)
var input4 = Double(input_web!)!
double_array.append(input4)
students[name] = double_array
}else{
break
}
}
var total:Double = 0
var total2:Double = 0
var total3:Double = 0
for (key, value) in students {
print(key, value)
print("\(key)의 평균 = \((value.reduce(0, +))/3)")
total += Double(value[0])
total2 += Double(value[1])
total3 += Double(value[2])
}
var student_count = Double(students.count)
print("---- 전체 성적 평균 ----")
print("ios 성적 평균 = \((total)/student_count)")
print("android 성적 평균 = \((total2)/student_count)")
print("web 성적 평균 = \((total3)/student_count)")
입력
학생이름:ppomelo
ios성적:4.5
android성적: 4.5
web 성적: 4.0
학생 이름: apple
ios 성적: 4.5
android 성적: 3.0
web 성적: 3.5
학생 이름: kiwi
ios 성적: 3.0
android 성적: 2.5
web 성적: 3.5
학생 이름:
출력
ppomelo [4.5, 4.5, 4.0]
ppomelo의 평균 = 4.333333333333333
apple [4.5, 3.0, 3.5]
apple의 평균 = 3.6666666666666665
kiwi [3.0, 2.5, 3.5]
kiwi의 평균 = 3.0
---- 전체 성적 평균 ----
ios 성적 평균 = 4.0
android 성적 평균 = 3.3333333333333335
web 성적 평균 = 3.6666666666666665
반응형
'프로그래밍 언어 > Swift' 카테고리의 다른 글
[Swift] 셋 Set (0) | 2019.07.01 |
---|---|
[Swift] 로또 번호 추출기 random(), flag, contains, sorted() (1) | 2019.07.01 |
[Swift] 학생의 평균 점수 및 과목별 평균 점수 계산하기 (0) | 2019.06.30 |
[Swift] 딕셔너리 Dictionary (0) | 2019.06.29 |
[Swift] 정수를 무제한 입력받아서 해당 정수들의 합과 평균 구하기 (0) | 2019.06.29 |