fork download
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. class Main{
  5. public static void main(String[] args) throws Exception {
  6. String inStr = ""
  7. + "A \\5000 C \\4000 E \\7000"
  8. +"\n"+"A \\90000 C \\6500 E \\8000"
  9. +"\n"+"A \\7500 C \\5500 E \\4000"
  10. +"\n"+"A \\6000 C \\3000 F \\2000"
  11. +"\n"+"A \\3500 C \\9000 F \\6500"
  12. +"\n"+"A \\4200 C \\4500 F \\3000"
  13. +"\n"+"A \\3500 D \\8000 E \\3000"
  14. +"\n"+"A \\40000 D \\9500 E \\4880"
  15. +"\n"+"B \\3500 C \\8000 E \\4500"
  16. +"\n"+"B \\4200 C \\9500 E \\5000"
  17. ;
  18. class Sum{
  19. public String nm;
  20. public int v;
  21. }
  22. List<Sum> adr = new ArrayList<Sum>(); //住所階層
  23. Sum sumAll = new Sum();
  24. for(String ln=br.readLine(); ln!=null; ln=br.readLine()){
  25. String[] ar = ln.split(" "); //1行を空白で分割
  26. for(int d=0; d*2+1<ar.length; d++){
  27. String nm = ar[d*2]; //エリア,県...
  28. int v = Integer.parseInt(ar[d*2+1].replace("\\","")); //金額
  29. if(d==0){
  30. sumAll.v += v;//全エリア合計
  31. }
  32. Sum sum = d<adr.size() ? adr.get(d) : null;
  33. if(sum==null){
  34. sum = new Sum();
  35. sum.nm = nm;
  36. adr.add(sum);
  37. }
  38. //切り替わり判定
  39. if(sum.nm.equals(nm)){
  40. sum.v += v;
  41. }
  42. else{
  43. for(int d2=adr.size()-1; d<=d2; d2--){
  44. Sum sum2 = adr.get(d2);
  45. String suf = d2==0?"エリア":d2==1?"県":d2==2?"地区":"";
  46. System.out.print(""+sum2.nm+suf+"合計:"+sum2.v+" ");
  47. adr.remove(d2);
  48. }
  49. System.out.println();
  50. sum = new Sum();
  51. sum.nm = nm;
  52. sum.v = v;
  53. adr.add(sum);
  54. }
  55. }
  56. }
  57.  
  58. int d=0;
  59. for(int d2=adr.size()-1; d<=d2; d2--){
  60. Sum sum2 = adr.get(d2);
  61. String suf = d2==0?"エリア":d2==1?"県":d2==2?"地区":"";
  62. System.out.print(""+sum2.nm+suf+"合計:"+sum2.v+" ");
  63. adr.remove(d2);
  64. }
  65. System.out.println();
  66.  
  67. System.out.println("エリア合計:"+sumAll.v);
  68. }
  69. }
Success #stdin #stdout 0.03s 245632KB
stdin
Standard input is empty
stdout
E地区合計:19000 
F地区合計:11500 C県合計:32500 
E地区合計:7880 D県合計:17500 Aエリア合計:159700 
E地区合計:9500 C県合計:17500 Bエリア合計:7700 
エリア合計:167400