辞書のデータ更新の問題についてです。
問題URL(https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_dictionary_step2)
問題文
n 人の人の名前 s_1, ..., s_n が与えられたのち、 m 回の「攻撃」に関する情報が与えられます。各行は “p_i a_i” というフォーマットで与えられ、 p_i はダメージを受けた人の名前 (s_1, ..., s_n のいずれか) 、 a_i は p_i が受けたダメージ数を表す数です。
最後に人名 S が与えられるので (S は s_1, ..., s_n のいずれか) 、 S が受けたダメージの合計を出力してください。なお、一度もダメージを受けていない人の合計ダメージは 0 とします。
条件
・1 ≤ n, a_i ≤ 50 (1 ≤ i ≤ n)
・各 s_i (1 ≤ i ≤ n) は大小アルファベットからなる長さ 1 以上 10 以下の文字列で、互いに全て異なる
入力例
2
Kirishima
Kyoko
2
Kyoko 1
Kyoko 2
Kyoko
出力例
3
このコードで正解はできたのですが納得できないところがあります。
var dic : [String:Int] = [:] let n = Int(readLine()!)! for _ in 0..<n { dic[readLine()!] = 0 } let m = Int(readLine()!)! for _ in 0..<m { let arr = readLine()!.split(separator: " ").map{ String($0) } dic[arr[0]]! += Int(arr[1])! } let S = readLine()! print(dic[S]!)
一つ目
dic[readLine()!] = 0
は
dic = [readLine()!,0]
だと入力によってはランタイムエラーになります。
2つ目
let arr = readLine()!.split(separator: " ").map{ String($0) }
はmapを使わないとエラーになりますが最初からString型ではないのでしょうか
またString型に直さないといけないのであれば
let arr : [String:String] = readLine()!.split(separator: " ")
でもいいのかと思いましたがダメでした。
以上の2点についてご教示いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/15 17:35