[paiza]スキルチェック見本問題 Java 偶奇の判定/曜日の判定 (paizaランク D 相当)


初めに

今回2つのスキルチェック問題に挑戦しました。
Dレベルにしては、少し難しく感じました。

①偶奇の判定

長さ N の数列Aが与えられます。
この数列に含まれる偶数の要素の個数と、奇数の要素の個数を答えてください。

解答コード(自作)

paizaの解答と比べるとあまりスマートとは言えませんが・・・
なんとか正解しました。
拡張for文マスターできれば色々できますね。


import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
//与えられる数字をキャッチします。
        int n = sc.nextInt();
//奇数、偶数の初期値を0でセットします。
        int even = 0;
        int odd = 0;
//n個の箱を持つ、int型の配列を作成します。
        int[] a = new int[n];
//以下for文です。n行分のデータを配列に入れていきます。
        for(int i=0; i<n; i++){
            a[i]= sc.nextInt();
        }
//以下、拡張for文です。配列の中身を取り出していきます。
        for(int x:a)
//偶数を見つけたらevenの値が1ずつ増えます。
            if(x%2==0){
               even = even +1;
            }else{
                odd = odd +1;
            }
        }

        System.out.print(even + " " + odd);
    }
}

②曜日の判定

ある月の 1 日は日曜日、 2 日は月曜日...です。X日は何曜日でしょう。

・・・?

・・・?

解答コード(自作)

1日が日曜なら、、
7/14/21/28の「7」で割れる数字が来たら、Sat。
1と、8/15/22/29の「7」で割ってあまり1が来たら、Sun。
2と、9/16/23/30の「7」で割ってあまり2が来たら、Mon。という感じで良いのかな。

import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        if(x%7==0){
            System.out.println("Sat");
        }else if((x%7==1)||(x==1)){
            System.out.println("Sun");
        }else if((x%7==2)||(x==2)){
            System.out.println("Mon");
        }else if((x%7==3)||(x==3)){
            System.out.println("Tue");
        }else if((x%7==4)||(x==4)){
            System.out.println("Wed");
        }else if((x%7==5)||(x==5)){
            System.out.println("Thu");
        }else if((x%7==6)||(x==6)){
            System.out.println("Fri");
        }
    }
}

修正バージョン

paizaの解答を確認し以下の通りに修正しました。
確かに、実際に手計算してみると、orの条件が無駄だったことに気づきました・・
if((x%7==2)||(x==2)) は、(x%7==2)で十分でした。

import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        if(x%7==0){
            System.out.println("Sat");
        }else if(x%7==1){
            System.out.println("Sun");
        }else if(x%7==2){
            System.out.println("Mon");
        }else if(x%7==3){
            System.out.println("Tue");
        }else if(x%7==4){
            System.out.println("Wed");
        }else if(x%7==5){
            System.out.println("Thu");
        }else if(x%7==6){
            System.out.println("Fri");
        }
    }
}

終わり