teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

ソースの訂正&説明の追加

2018/04/12 09:08

投稿

退会済みユーザー
answer CHANGED
@@ -26,8 +26,49 @@
26
26
  すみませんがもう少し詳しく説明していただけませんか?
27
27
  よろしくお願いします。
28
28
 
29
+ <追記>
30
+ 問題の意味が分かったので私か書いたソース(一番下にある)の説明をしたいと思います。
29
31
  ```Java
32
+ String []color = new String[n];
33
+ int []color_num = new int[n];
34
+ String []color2 = new String[m];
35
+ int []color2_num = new int[m];
36
+ ```
37
+
38
+ 上から順に必要な色の 名前・個数
39
+ 所持している色の 名前・個数
40
+ となります。
41
+
42
+ ```Java
43
+ for(int i = 0; i < n; i++){
44
+ for(int j = 0; j < m; j++){
45
+ if(color[i].equals(color2[j])){
46
+ array.add(color2_num[j] / color_num[i]);
47
+ }
48
+ }
49
+ }
50
+
51
+ ```
52
+ これはn個の色の名前を一つずつ m個の所持している色と名称が同じかどうかチェックしています。
53
+ 同じなら(例えば質問欄にあったaoにしましょう.)所持している個数(今回は20個)と
54
+ 必要な個数(今回は3個)で20 / 3 = 6組できます。
55
+ この操作をfor文で全通りやります。それぞれの色が何組できるかListに格納しましょう。
56
+
57
+ ```Java
58
+ Collections.sort(array);
59
+ ```
60
+ これを使うとListに格納したデータを昇順にソートすることができます。
61
+ 昇順にソートすると最小値が一番最初 つまり0番目に来ます。
62
+ この0番目を結果として表示すれば完了です!!
63
+
64
+ 以上
65
+
66
+ 私が書いたソースコードを載せます。
67
+
68
+ ```Java
30
69
  import java.util.Scanner;
70
+ import java.util.ArrayList;
71
+ import java.util.Collections;
31
72
 
32
73
  public class Main{
33
74
  public static void main(String[] args){
@@ -55,12 +96,16 @@
55
96
  color2[i] = resultArray[0];
56
97
  color2_num[i] = Integer.parseInt(resultArray[1]);
57
98
  }
99
+ ArrayList<Integer> array = new ArrayList<>();
58
100
  for(int i = 0; i < n; i++){
101
+ for(int j = 0; j < m; j++){
102
+ if(color[i].equals(color2[j])){
59
- System.out.println( color[i] + " " + color_num[i]);
103
+ array.add(color2_num[j] / color_num[i]);
104
+ }
105
+ }
60
106
  }
61
- for(int i = 0; i < m; i++){
107
+ Collections.sort(array);
62
- System.out.println(color2[i] + " " + color2_num[i]);
108
+ System.out.println(array.get(0));
63
- }
64
109
  }
65
110
  }
66
111
  ```