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 ํ์ ์ ์ฌ์ฉํฉ๋๋ค.
'๐ Daily Loaf > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค๋ฒ5][Swift]๋ฐฑ์ค2563๋ฒ (0) | 2024.10.14 |
---|---|
[๋ธ๋ก ์ฆ2][Swift]๋ฐฑ์ค10811๋ฒ(reverse) (1) | 2024.10.07 |
[๋ธ๋ก ์ฆ2][Swift]๋ฐฑ์ค3052๋ฒ(Set) (0) | 2024.10.07 |
[๋ธ๋ก ์ฆ3][Swift]๋ฐฑ์ค5597(๋ฐฐ์ด) (1) | 2024.10.07 |
[๋ธ๋ก ์ฆ2][Swift]๋ฐฑ์ค10813 (1) | 2024.10.07 |
[๋ธ๋ก ์ฆ3][Swift]๋ฐฑ์ค10810(Array) (0) | 2024.10.05 |
[๋ธ๋ก ์ฆ5][Swift]๋ฐฑ์ค10951(while/EOF) (1) | 2024.10.04 |
[๋ธ๋ก ์ฆ5][Swift]๋ฐฑ์ค10952(while) (0) | 2024.10.04 |