π Daily Loaf/μκ³ λ¦¬μ¦
[λΈλ‘ μ¦1][Swift]λ°±μ€1546λ²(map/reduce)
BreadDev
2024. 10. 7. 09:51
728x90
https://www.acmicpc.net/problem/1546
λ΅μμ½λ
let N = Int(readLine()!)!
let scores = readLine()!.split(separator: " ").map { Double($0)! }
let maxScore = scores.max()!
let newScores = scores.map { $0 / maxScore * 100 }
let average = newScores.reduce(0, +) / Double(N)
print(average)
- let N = Int(readLine()!)!:
- 첫 λ²μ§Έ μ€μμ κ³Όλͺ©μ κ°μ Nμ μ λ ₯λ°μ μ μλ‘ λ³νν©λλ€.
- !λ₯Ό μ¬μ©ν κ°μ μΈλνμ μ λ ₯μ΄ νμ μ ν¨ν μ μμΌ κ²μ΄λΌκ³ κ°μ ν λλ§ μμ ν©λλ€.
- let scores = readLine()!.split(separator: " ").map { Double($0)! }:
- λ λ²μ§Έ μ€μμ Nκ°μ μ μλ₯Ό μ λ ₯λ°μ΅λλ€.
- 곡백μΌλ‘ λΆλ¦¬νκ³ κ° μ μλ₯Ό Double νμ μΌλ‘ λ³νν©λλ€.
- Doubleμ μ¬μ©νλ μ΄μ λ λμ€μ μμμ κ³μ°μ΄ νμνκΈ° λλ¬Έμ λλ€.
- let maxScore = scores.max()!:
- μ λ ₯λ°μ μ μλ€ μ€ μ΅λκ°μ μ°Ύμ΅λλ€.
- !λ₯Ό μ¬μ©ν κ°μ μΈλνμ λ°°μ΄μ΄ λΉμ΄μμ§ μλ€κ³ κ°μ ν λλ§ μμ ν©λλ€.
- let newScores = scores.map { $0 / maxScore * 100 }:
- κ° μ μλ₯Ό μλ‘μ΄ λ°©μμΌλ‘ κ³μ°ν©λλ€: (μ μ / μ΅λκ° * 100)
- map ν¨μλ₯Ό μ¬μ©νμ¬ λͺ¨λ μ μμ λν΄ μ΄ κ³μ°μ μνν©λλ€.
- let average = newScores.reduce(0, +) / Double(N):
- μλ‘ κ³μ°λ μ μλ€μ νκ· μ ꡬν©λλ€.
- reduceλ₯Ό μ¬μ©νμ¬ λͺ¨λ μ μλ₯Ό λν ν, κ³Όλͺ© μλ‘ λλλλ€.
- Double(N)μΌλ‘ Nμ Doubleλ‘ λ³ννμ¬ μ νν μμμ κ³μ°μ΄ κ°λ₯νκ² ν©λλ€.
Swiftμ κ³ μ°¨ ν¨μλ€(map, reduce)μ νμ©νμκ³ μ΅λκ°μ μ°Ύκ³ , μ΄λ₯Ό κΈ°λ°μΌλ‘ μλ‘μ΄ μ μλ₯Ό κ³μ°νμμ΅λλ€.
νκ· κ³μ° μ μ νν μμμ κ³μ°μ μν΄ Double νμ μ μ¬μ©ν©λλ€.