[Swift]バックアップアルゴリズム#1546


📝 質問する


勢俊は期末試験に失敗した.勢俊は点数を偽造して家に持ち帰ることにした.まず勢俊は自分の点数の中で最高値を選んだ.この値をMと言います.そしてすべての点数を点数/M 100に変更しました.
例えば、ポテンシャル俊の最高点数が70で、数学点数が50であれば、数学点数は50/70100で71.43点になります.
上記の方法で勢俊の成績を再計算する場合は、新しい平均値を求めるプログラムを作成してください.

入力


1行目は試験科目の個数Nを与える.この値は1000以下です.2列目は勢俊の今の成績をあげた.この値は100以下の整数ではなく、少なくとも1つの値が0より大きい.

🖨 しゅつりょく


最初の行に新しい平均値を出力します.実際の正解と出力値の絶対誤差または相対誤差が10−2以下であることが正解である.

入力例1

3
40 80 60

🖨 サンプル出力1

75.0

入力例2

3
10 20 30

🖨 サンプル出力2

66.666667

📚 私が提出したコード

let count = Double(readLine()!)!
let realScore = readLine()!.split(separator: " ").map { Double(String($0))! }
let maxScore = realScore.max()!
let fakeScore = realScore.map { $0 / maxScore * 100 }
var sum = 0.0
for i in fakeScore {
    sum += i
}
print(sum / count)

▼▼私が提出したコードの説明

  • readline():キーボード入力値を受け入れる関数
  • readLine()!.split(separator: "").map { Double(String($0))! } : キーボードで入力した値を「」セルに分割して並べ替え、各並べ替え要素をDoubleに変換します.(Doubleに変換した理由は、最終出力の平均値が少数であるためです.)
  • max():アレイ要素の最大値
  • メモリ:62228 KB
  • 時間:8 ms
  • コード長:265 B
  • 👀 さらに理解する必要がある

  • なぜInt($0)!Int(String($0)比の速度が速い!の速度はもっと速いですか...?(#10818にも疑問あり)
  • map関数について...