白駿Baekjoon 2309号七人小人-JAVA

10173 ワード

https://www.acmicpc.net/problem/2309
質問する
王妃を避けるため、7人の小人と平和に暮らしていた白雪姫は危機に直面した.一日の仕事を終えて帰ってきた矮人は7人ではなく、9人だった.
9人の小人はみな「白雪姫と7人の小人」の主役だと主張している.優れた数学的直感を持つ白雪姫は、幸いにも7人の小人の身長の和が100だったことを覚えている.
9人のジュニアの身長を手に入れたとき、白雪姫に7人のジュニアを探すプログラムを書いてください.
入力
9列の小人の身長.与えられた身長は100を超えない自然数で、9人のジュニアの身長はすべて異なっていて、可能な答えがたくさんあれば、勝手に出力することができます.
しゅつりょく
昇順に7人の小人の身長を出力する.7人の小人が見つからないことはない.
入力例1
20
7
23
19
10
15
25
8
13
サンプル出力1
7
8
10
13
19
20
23
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);

		int sum = -100;
		List<Integer> list = new ArrayList<>();
		while (sc.hasNextInt()) { // 라인별 접근을 위한 순한
			String str = sc.nextLine();
			int num = Integer.parseInt(str);
			list.add(num);
			sum += num;
		}

		out: for (int i = 0; i < list.size(); i++) {
			for (int j = list.size() - 1; j > i; j--) {
				if (sum == list.get(i) + list.get(j)) {
					list.set(i, 0);
					list.set(j, 0);
					break out;
				}
			}
		}
		Collections.sort(list);
		for (int i = 0; i < list.size(); i++) {
			if (list.get(i) > 0) {
				System.out.println(list.get(i));
			}
		}

	}
}
  • 説明
  • は簡単に7人以上の二重砲口を実現した(ただし、重複計算を避けるためにj>iを用いる)
  • .