7.List of Conquests (CPE21924, UVA10420) - CPE一顆星解答與說明

   👉  CPE 一顆星選集列表(49題) 題目說明與解答


題目


  • 幫忙統計數量


輸入說明


  • 輸入資料最多會有 2000 行
  • 第一行的數字 n 是宣告接下來有幾筆資料
  • 每一行包含國家名詞姓名
  • 假設國家名詞都只有一個單字


輸出說明

  • 按照字母排序將國家名稱人數印出
  • 國家名稱人數中間要以空白隔開


解題技巧

  • 注意讀取資料的方式,使用next()與 nextLine()的時機
  • 根據資料筆數,使用 for 迴圈讀取資料
  • 使用 Map 儲存國家名稱與人數
  • 跟第 8 題 What's Cryptanalysis? (CPE10402, UVA10008),統計英文字母出現幾次,用 map 解的邏輯類似


解題過程

取得輸入

  • 取得資料筆數,使用 nextInt() ,不包含空白與換行
  • 根據資料筆數,使用 for 迴圈讀取資料
  • 讀取國家 next() ,不包含空白與換行
  • 讀取姓名 nextLine()

儲存輸出資料

  • Map<Key, Value> = <國家名稱, 人數>
    • 一個鍵值Key對應一個元素Value,鍵值不重複
  • 宣告 TreeMap 型別的變數,用來儲存國家名稱人數 
  • TreeMap 會自動根據 Key 排序,符合題目按照英文排序國家名稱的需求
  • 宣告方法
    • TreeMap <類別, 類別> = new TreeMap <類別, 類別>();
    • 此處的類別不能放基本資料型別,要放參考資料類別
    • TreeMap <String, Integer> = new TreeMap <StringInteger>();



認識Map 的方法

  • 增加 Key 與 Value 
    • put(K key, V value)
  • 判斷
    • containsKey(Object key):此 key 是否存在 map 中
    • containsVaule(Object value) :此 value 是否存在 map 中
  •  取得 map 中所有的 key
    • keySet() :具有唯一性的 key 集合
  •  取得某 Key 的值(Value)
    • get(Object key)

統計國家與人數

  • 宣告 count 變數,統計該國家有幾個人
  • count 預設值為 1,當讀取到該國家時,表示此國至少有一個人
  • 判斷此國是否存在於 map 中
    • 存在:表示此國之前曾出現過
    • 呼叫 Map 中的 get(key) 方法,取得此國的人數,並將人數加 1
  • 呼叫 Map 提供的 put(key,value) 方法,更新國家名稱人數


   👉  CPE 一顆星選集列表(49題) 題目說明與解答


留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明