回答編集履歴

1

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

2018/04/12 09:08

投稿

退会済みユーザー
test CHANGED
@@ -54,10 +54,92 @@
54
54
 
55
55
 
56
56
 
57
+ <追記>
58
+
59
+ 問題の意味が分かったので私か書いたソース(一番下にある)の説明をしたいと思います。
60
+
61
+ ```Java
62
+
63
+ String []color = new String[n];
64
+
65
+ int []color_num = new int[n];
66
+
67
+ String []color2 = new String[m];
68
+
69
+ int []color2_num = new int[m];
70
+
71
+ ```
72
+
73
+
74
+
75
+ 上から順に必要な色の 名前・個数
76
+
77
+ 所持している色の 名前・個数
78
+
79
+ となります。
80
+
81
+
82
+
83
+ ```Java
84
+
85
+ for(int i = 0; i < n; i++){
86
+
87
+ for(int j = 0; j < m; j++){
88
+
89
+ if(color[i].equals(color2[j])){
90
+
91
+ array.add(color2_num[j] / color_num[i]);
92
+
93
+ }
94
+
95
+ }
96
+
97
+ }
98
+
99
+
100
+
101
+ ```
102
+
103
+ これはn個の色の名前を一つずつ m個の所持している色と名称が同じかどうかチェックしています。
104
+
105
+ 同じなら(例えば質問欄にあったaoにしましょう.)所持している個数(今回は20個)と
106
+
107
+ 必要な個数(今回は3個)で20 / 3 = 6組できます。
108
+
109
+ この操作をfor文で全通りやります。それぞれの色が何組できるかListに格納しましょう。
110
+
111
+
112
+
113
+ ```Java
114
+
115
+ Collections.sort(array);
116
+
117
+ ```
118
+
119
+ これを使うとListに格納したデータを昇順にソートすることができます。
120
+
121
+ 昇順にソートすると最小値が一番最初 つまり0番目に来ます。
122
+
123
+ この0番目を結果として表示すれば完了です!!
124
+
125
+
126
+
127
+ 以上
128
+
129
+
130
+
131
+ 私が書いたソースコードを載せます。
132
+
133
+
134
+
57
135
  ```Java
58
136
 
59
137
  import java.util.Scanner;
60
138
 
139
+ import java.util.ArrayList;
140
+
141
+ import java.util.Collections;
142
+
61
143
 
62
144
 
63
145
  public class Main{
@@ -112,17 +194,25 @@
112
194
 
113
195
  }
114
196
 
197
+ ArrayList<Integer> array = new ArrayList<>();
198
+
115
199
  for(int i = 0; i < n; i++){
116
200
 
201
+ for(int j = 0; j < m; j++){
202
+
203
+ if(color[i].equals(color2[j])){
204
+
117
- System.out.println( color[i] + " " + color_num[i]);
205
+ array.add(color2_num[j] / color_num[i]);
206
+
207
+ }
208
+
209
+ }
118
210
 
119
211
  }
120
212
 
121
- for(int i = 0; i < m; i++){
213
+ Collections.sort(array);
122
-
214
+
123
- System.out.println(color2[i] + " " + color2_num[i]);
215
+ System.out.println(array.get(0));
124
-
125
- }
126
216
 
127
217
  }
128
218