白駿Baekjoon 3040号白雪姫と七人の小人-JAVA


https://www.acmicpc.net/problem/3040
質問する
毎日7人の小人が鉱山に行って仕事をしている.ジュニアが仕事をしている間に、白雪姫は彼らのために夕食を用意した.白雪姫は椅子を7つ、皿を7つ、ナイフを7つ用意しました.
ある日、鉱山から9人の小人が帰ってきた.9人の小人は自分が白雪姫の7人の小人だと言い張った.
それを防ぐため、白雪姫はジュニアの帽子に100未満の整数を書いた.実は、白雪姫はお姫様になる前にとても有名な数学者でした.そのため、7人の小人の帽子には数字の和が100と書かれています.
9人の小人の帽子に書いた数字をあげたとき、7人の小人を探すプログラムを書いてください.(9個の数の和が100の7個の数を見つけてください)
**入力
合計9本の線は、1以上99以下の自然数を与える.すべての数字が違います.また、答えが唯一の場合にのみ、答えを入力します.
**出力
7人の小人がかぶっている帽子の数字が1行1行印刷されています.
入力例1
7
8
10
13
15
19
20
23
25
サンプル出力1
7
8
10
13
19
20
23
入力例2
8
6
5
1
37
30
28
22
36
サンプル出力2
8
6
5
1
30
28
22
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		List<Integer> list = new ArrayList<>();

		int sum = -100;

		for (int i = 0; i < 9; i++) {
			list.add(Integer.parseInt(sc.nextLine()));
			sum += list.get(i);
		}

		out: for (int i = 0; i < list.size(); i++) {
			for (int j = i + 1; j < list.size(); j++) {
				if (list.get(i) + list.get(j) == sum) {
					for (int k = 0; k < list.size(); k++) {
						if (k != i && k != j)
							System.out.println(list.get(k));
					}
					break out;
				}
			}
		}
	}
}
  • 説明
  • の結果値の数字に焦点を当て、-100の状態ですべての数字を加算します.
  • a+b-100+のすべての透かしを探します.