3週目の回答


1.小数を作成


問題の説明


与えられた数字のうち3つの数字を小数に加算すると、個数を求めてみます.数値を持つ配列numsをパラメータとする場合は、solution関数を完了してnumsの3つの異なる数値の小数を返します.

せいげんじょうけん


numsに含まれる数字の個数は3個または50個を超えない.
numsの各要素は1000より大きい自然数であり、重複する数字は含まれていない.

ビルトインコード

class Solution {
    public int solution(int[] nums) {
        int answer = -1;

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}

説明する

import java.util.Scanner;

public class Solution11 {
    public int solution(int[] nums) {
        int answer = 0;
        int sum=0;
        for(int i=0; i<nums.length-2; i++) {
            for(int j=i+1; j<nums.length-1; j++) {
                for(int k=j+1; k<nums.length; k++) {
                    sum=(nums[i]+nums[j]+nums[k]);
                    int cnt=0;
                    for(int o=2; o<sum; o++) {
                        if(sum%o==0) {
                            cnt++;
                        }
                    }
                    if(cnt==0) {
                        answer++;
                    }
                }
            }
        }
        return answer;
    }
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        Solution11 s = new Solution11();
        int len=scan.nextInt(); //배열 길이 - 3 이상 50 이하
        int[] nums=new int[len];
        for(int i=0; i< nums.length; i++) {
            nums[i]= scan.nextInt();
        }
        System.out.print(s.solution(nums));
    }
}

説明する


数字を3つ追加するのでfor文を3つ返します.最初のfor文は、iが0からnumsまでの長さから2を減算する長さを増加させます.2番目のfor文は、jがiに1を加えた値からnums長を増やして1を減算する.3番目のfor文は、kをjプラス1からnumsの長さに増やします.このようにする理由は、3つの数字を加えるときは順番に関係ないので、繰り返すことができません.3つの数字を加えた値をsumに直接置き、素数を求めるfor文を返した.まずcntを0に初期化し、2をsumから1を減算した値をo、sumをoで割った場合、残りが0の場合、cntは1を増加する.for文が終了すると,cntが0の場合,1とsumは自分ではなく,他の数字は数えられないことを示すため,答えを1増やして少数の数を格納する.

2.自然数を逆さに並べる


問題の説明


自然数nを逆さまにして、各数字を要素の配列で返します.例えば、nが12345の場合、[5,4,3,2,1]が返される.

せいげんじょうけん


nは10000000以下の自然数である.

ビルトインコード

class Solution {
    public int[] solution(long n) {
        int[] answer = {};
        return answer;
    }
}

説明する

import java.util.Scanner;

public class Solution12 {
    public int[] solution(long n) {
        int[] answer={};
        int cnt=0;
        long o=n;
        while(o>10) {
            o=(o/10);
            cnt++;
        }
        answer = new int[cnt+1];
        for(int i=0; i<answer.length; i++) {
            answer[i]=(n<10) ? (int)n:(int)(n%10);
            n=n/10;
        }

        return answer;
    }
    public static void main(String args[]){
        Scanner scan=new Scanner(System.in);
        Solution12 s = new Solution12();
        Long n = scan.nextLong();
        for(int i=0; i<s.solution(n).length; i++) {
            System.out.print(s.solution(n)[i]+" ");
        }
    }
}

説明する


nを加えたoは10より大きくなるまで10に分けて数えます.カウント+1に基づいて解答配列の長さを決定した後、for文を用いて、nが10以下になるまでnを10で割った残りの数を加え、nを10で割って初期化する.10未満の数字であれば、nを答えに入れます.

3.ハザード数


問題の説明


正の整数xを下のスケール数にするには、xをxの桁数の和で除算する必要があります.例えば、18の桁数の和は1+8=9であり、18は9で除算されるので、18は下付き文字数となる.自然数xを入力し、xがハザード数の関数かどうかをチェックし、解を完了します.

せいげんじょうけん


xは1または10000より大きい整数です.

ビルトインコード

class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        return answer;
    }
}

説明する

import java.util.Scanner;

public class Solution13 {
    public boolean solution(int x) {
        boolean answer;
        int n = x;
        int sum = 0;
        while(true) {
            sum+=(n%10);
            n=n/10;
            if(n<10) {
                sum+=n;
                break;
            }
        }
        if(x%sum==0)
            answer = true;
        else
            answer =  false;

        return answer;
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Solution13 s = new Solution13();
        System.out.print(s.solution(scan.nextInt()));
    }
}

説明する


xの値nを10で割ったときの剰余を加算し、nを10で割った値をnに格納する.nが10未満の場合、n自体をsumに加算し、whileゲートを離れる.このとき,xを和で割って残りが0であればハザード数は正しいので,答えにtrueを入れ,そうでなければ答えにfalseを入れて反撃する.

4.薬水の和


問題の説明


整数nを受け入れ、nのすべての約数加算値を返す関数は、解を完了してください.

せいげんじょうけん


nは3000以下の整数である.

ビルトインコード

class Solution {
    public int solution(int n) {
        int answer = 0;
        return answer;
    }
}

説明する

import java.util.Scanner;

public class Solution14 {
    public int solution(int n) {
        int answer = 0;
        for(int i=1; i<=n; i++) {
            if(n%i==0)
                answer+=i;
        }
        return answer;
    }
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        Solution14 s = new Solution14();
        System.out.print(s.solution(scan.nextInt()));
    }
}

説明する


nをiで割った場合、余剰数が0の場合、iはnの約数である.iが薬液になるたびに、答えにiを付けてから返事をします.

4.模擬試験


問題の説明


数学は数学を放棄する人の略語である.「囚人3人組」は模擬試験で数学の問題を全部撮りたいと思っている.最初の問題から最後の問題まで、執胞子は以下の通りである.
1番捕手の撮り方:1,2,3,4,5,1,2,3,4,5...
2番捕手の撮り方:2、1、2、3、2、4、2、5、2、2、3、2、4、2、5...
3番捕手の撮り方:3,3,1,1,2,2,4,5,5,3,3,1,2,2,4,5,5...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.

せいげんじょうけん


試験には最大10000問が含まれている.
質問の答えは1 2 3 4 5のうちの1つです.
点数が一番高い人が何人かいる場合は、戻った値を昇順に並べてください.

ビルトインコード

class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};
        return answer;
    }
}

説明する

import java.util.ArrayList;
import java.util.Scanner;

public class Solution15 {
    public int[] solution(int[] answers) {
        int[] a = {1,2,3,4,5};  //수포자1
        int[] b = {2,1,2,3,2,4,2,5};    //수포자2
        int[] c = {3,3,1,1,2,2,4,4,5,5};    //수포자3

        int a_cnt=0;
        int b_cnt=0;
        int c_cnt=0;

        for(int i=0; i<answers.length; i++) {
            if(a[i%a.length]==answers[i])
                a_cnt++;
            if(b[i%b.length]==answers[i])
                b_cnt++;
            if(c[i%c.length]==answers[i])
                c_cnt++;
        }

        ArrayList<Integer> arr = new ArrayList<>();
        int max=Math.max(a_cnt,Math.max(b_cnt,c_cnt));

        if(max==a_cnt)
            arr.add(1);
        if(max==b_cnt)
            arr.add(2);
        if(max==c_cnt)
            arr.add(3);

        int[] answer = new int[arr.size()];
        for(int i=0; i<answer.length; i++) {
            answer[i]=arr.get(i);
        }
        return answer;
    }
}

説明する


水泡1、2、3の配列値は、解答の長さに応じて(iを水泡1、2、3の長さに分ける)繰り返す必要があるため、部屋と解答の(i)部屋が同じであれば、水泡1、2、3のカウントは1ずつ増加する.そしてマックスを救うためにmax()関数を使ってみます.Math.max()関数は、2つの値のうちより大きな値を返します.比較が必要な値は3つあるので、Math.Mathはmax()関数にあります.max()関数をもう一度追加し,3つの値を比較した.そして、その最大値が各小胞子1,2,3のカウントと等しい場合、add()関数を用いて、名前に従ってそれぞれ1,2,3を入れる.最後に,返す答えの配列長をarrのsizeとし,for文を答え配列にaddを用いて入れたarrの値に変換する.