だいぶ悩みました。。
しかし、これもロジックを覚えておけば多分応用できますね。
前提
- arrayの値はランダムに入力される
- arrayのlengthも入力される値に左右される
メモ
- まず値の並びがランダムなので
Arrays.sort()
を行う(これやらないとロジックが正しく動かない) - arrayの実際の大きさより-1した値を上限としてループ
- ループ時の現在の値とindex+1した値を比較
- 値が違う場合は新しいarrayに値を追加
- ループはarrayサイズの上限-1なので、もし同じ値が続いた場合{1,1,1,1}とか{1,2,3,3}だったら何も新しいarrayに値が入らないか、最後の
3
がarrayに入らない。
ので最後のindexの値を新しいarrayに追加
コード
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int peopleNum = scanner.nextInt(); int[] array = new int[peopleNum]; for (int i = 0; i < peopleNum; i++) { int rate = scanner.nextInt(); array[i] = judgeColor(rate); } Arrays.sort(array); //ここ重要 System.out.println(Arrays.toString(array)); ArrayList<Integer> newArray = new ArrayList<Integer>(); for (int j = 0; j < array.length-1; j++) { //下で+1するのでOutofIndexにならないように-1しておく if (array[j] != array[j+1]) { newArray.add(array[j]); } } newArray.add(array[array.length-1]); //もし同じ値が続いた場合、newArrayは空になるのでこの行も重要 System.out.println(newArray.toString()); //omitted