Paiza x Java Dの問題といていきますよ。コード付き

みなさん、こんにちは
Paizaというサイトをご存じですか?コーディング力、アルゴリズムなどを鍛えるサイトです。
そちらのサイトの問題をJavaを使って解いてきます。
よかったら参考にしてくださいね。

文字列の書き換え 2021/10/04

https://paiza.jp/works/mondai/string_primer/normal_step3

package com.company;
import java.util.*;

public class Main {

    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
        //置換対象となる文字列の入力
        String inputString = sc.next();
        //置換対象の文字列位置
        Integer pos  = sc.nextInt();
        //置換対象の文字
        String c = sc.next();
        //新しい文字列を生成するためのStringBuilder
        StringBuilder newString = new StringBuilder(inputString);
        //setCharAtというメソッドで文字を置換します。
        newString.setCharAt(pos - 1,c.charAt(0));
        //標準出力
        System.out.println(newString);
    }
}

2 行目で与えられる N 個の実数の入力 2021/10/04

https://paiza.jp/works/mondai/stdin_primer/stdin_primer__real_number_step2

package com.company;
import java.math.BigDecimal;
import java.util.*;
​
public class Main {
​
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //入力される数値の数
        Integer inputNumber = sc.nextInt();
        //文字列 or BigDecimalどちらか片方で対応可能
        //入力された実数(文字列として保存)
        List<String> realNumbers = new ArrayList<String>();
        //入力された実数(BigDecimalとして保存)
        //BigDecimalは、実数を表現する1つの方法です。
        //誤差が発生しないという特徴があります。
        //あと有効桁数を保持してくれてます。
        //1という数字と1.0という数字は同じではありません。
        //1という数字は、もしかしたら1.5かもしれないからです。
        List<BigDecimal> realNumbers2 = new ArrayList<BigDecimal>();
        for(int i = 0; i < inputNumber; i++)
        {
            String num = sc.next();
            //今回の問題は、必ずしもリストにいれる必要がないのですが
            //リストの使い方を学んでほしかったのでいれました。
            //他にも配列にいれる方法もありますね。
            realNumbers.add(num);
            realNumbers2.add(new BigDecimal(num));
        }
        for (var each: realNumbers2)  //realNumbersでも同じ結果になります。
        {
            System.out.println(each);
        }
    }
}

N行のデータの入力 2021/10/05

https://paiza.jp/works/mondai/stdin/stdin_n_line

package com.company;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.IntStream;
​
public class Main {
​
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //入力文字列格納
        var datas = new ArrayList<String>();
        //入力個数
        var inputNum = sc.nextInt();
        //これわかります?
        //0からinputNum - 1の回数分の処理を実行します。
        //forEachメソッドの引数はラムダ式と呼ばれます。
        //for文でももちろんかけますね。
        IntStream.range(0,inputNum).forEach(
                num -> datas.add(sc.next())
        );
        //ここでもラムダ式をつかってます。
        datas.forEach(
                data -> System.out.println(data)
        );
    }
}

満員電車の乗車率 2021/10/05

https://paiza.jp/works/mondai/drankfast/d13_crowded_train
生徒さんがといてくれました。とっても嬉しいです!

import java.util.*;
import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ!!
        Scanner sc = new Scanner(System.in);
        double n = sc.nextDouble();

        double d = n/140.0*100;

        d = Math.floor(d);        
        int result = (int)d;

        System.out.println(result+"%");

    }
}

0から9までのカウンタ 2021/10/05

https://paiza.jp/works/mondai/drankfast/d14_counting

package com.company;
import java.util.*;
​
public class Main {
​
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //開始の数
        var startNum = sc.nextInt();
        for(var i = 0; i < 10;i++)
        {
            System.out.println((startNum + i) % 10);
        }
    }
}

さまざまな長さの配列の和 2021/10/08

生徒さんがといてくれました。
loopがネストのがポイントですね。

https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__various_row_sum

public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ!!
        Scanner sc = new Scanner(System.in);
        int sum = 0;

        String str = sc.nextLine();
        int n = Integer.parseInt(str);

        for(int i=0; i<n;i++){
            String str2 = sc.nextLine();
            String[] datas = str2.split(" ");

            for (int j = 1; j < datas.length; j++) {
                sum += Integer.parseInt(datas[j]);
            }

            System.out.println(sum);
            sum = 0;
        }

    }
}

こちらは私がときました。

package com.company;
import java.sql.Array;
import java.util.*;
​
public class Main {
​
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //行数
        var rowNum = sc.nextInt();
        //1行にいくつデータがあるか格納する
        var rows = new ArrayList<Integer>();
        //データ自体を格納する。
        var datas = new ArrayList<Integer>();
        for(var i = 0; i < rowNum;i++)
        {
            var rowWidth = sc.nextInt();
            rows.add(rowWidth);
            for(var j = 0; j < rowWidth;j++)
            {
                datas.add(sc.nextInt());
            }
        }
        int index = 0;
        for (var each:rows) {
            int total = 0;
            for(var i = 0; i < each;i++)
            {
                total +=  datas.get(index);
                index++;
            }
            System.out.println(total);
        }
    }
}

素数の個数 2021/10/11

https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__prime_number_easy

package com.company;
import java.sql.Array;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int primaryCount = 0;
        for (int i = 2;i <= n; i++)
        {
            boolean isPrimary = true;
            for(int j = 2;j < i;j++)
            {
                if(i % j == 0)
                {
                    isPrimary = false;
                    break;
                }
            }
            if(isPrimary)
            {
                primaryCount++;
            }
        }
        System.out.println(primaryCount);
    }
}