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の値に変換する.
Reference
この問題について(3週目の回答), 我々は、より多くの情報をここで見つけました https://velog.io/@insori0691/3주차-풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol