たいちっち

競技プログラミングをしています

【Java】鉄則本_A05

読んでいる本

問題と提出した回答A05

import java.util.Scanner;

public class A05 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int K = sc.nextInt();

        int counter = 0;
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= N; j++) {
                int l = K-i-j;
                if (1 <= l && l <= N) {
                        counter += 1;
                    }
            }
        }
        System.out.println(counter);
    }
}

公式の回答と同じ方法だった。

公式の回答:kyopro-tessoku/codes/java/chap01/answer_A05.java

for文を3回使って全探索する方法でも答えは出るが、時間が掛かり過ぎる。
3つの値の合計が分かっていて(K)、2つの値が分かっているなら、もう1つの値も分かるという考え方で、for文を2回に抑える。

この問題はAtCoderの「C - Otoshidama」

の類題だった。

TODO

  • 他のA,B,C問題を解く
  • 本の続きを読む

 

おわり。。