このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集のCランクレベルアップメニューから「辞書の基本 (paizaランク C 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
n 人の人に関して、それぞれの人の名前と財産が与えられます。その後に人名 S が与えられるので (S は最初に与えられた名前のうちのいずれか) 、 S の財産を表す整数を出力してください。
入力される値
入力は以下のフォーマットで与えられます。
1 2 3 4 5 |
n s_1 a_1 ... s_n a_n S |
- 1 行目には正整数 n が与えられ、 2 行目から (n + 1) 行目には、人々の名前と財産が “s_i a_i” というフォーマット ( s_i は人の名前を表す文字列、 a_i はその人の財産を表す整数、半角スペース区切り)で与えられます。 (n + 2) 行目には人名 S が与えられます ( S は 2 行目から (n + 1) 行目にかけて与えられた人名のいずれか)。
期待する出力
S の財産を出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。
考え方
執筆中
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// 読み込む行数 let n = Int(readLine()!)! // 空辞書を作成する var zaihou:[String: Int] = [:] // n 行目まで順次読み込み、辞書に入れる for _ in 0..<n { let sa = readLine()!.split(separator: " ").map { String($0) } if let _ = zaihou[sa[0]] { zaihou[sa[0]]! += Int(sa[1])! } else { zaihou[sa[0]] = Int(sa[1]) } } // 判定する人を読み込む let s = readLine()! // 辞書のうち、該当する key の value を表示する print(zaihou[s]!) |