3週目の解答
86545 ワード
2022.04.11
与えられた数字のうち3つの数字を小数に加算すると、個数を求めてみます.数値を持つ配列numsをパラメータとする場合は、solution関数を完了してnumsの3つの異なる数値の小数を返します.
🔎 内蔵
3重for文を用いてsumに3つの値を順次加算し,sumが小数であることを決定するためにfor文を回した後if文を用いて2からsumで割って小数を求める.三重forクエリの効率を向上させるには,不要な部分を減らす必要があり,else ifとxが同時に無応答器に追加する必要がある.
2022.04.12
自然数nを逆さまにして、各数字を要素の配列で返します.例えば、nが12345の場合、[5,4,3,2,1]が返される.
🔎 内蔵
整数型intをint配列に変換するためにfor文の代わりにメソッドを用いた.String.ValueOfを使用してStringアレイとStreamに変換します.of(String配列).mapToInt(Integer::parseInt).toArray();String配列をint配列に変換します.これによりintをint配列に変換します.その後,for文を用いて元の配列の値を逆さにして答え配列に入れる.
2022.04.13
正の整数xを下のスケール数にするには、xをxの桁数の和で除算する必要があります.例えば、18の桁数の和は1+8=9であり、18は9で除算されるので、18は下付き文字数となる.自然数xを入力し、xがハザード数の関数かどうかをチェックし、解を完了します.
🔎 内蔵
Stream.of(String.valueOf(x).split("")).mapToInt(Integer::parseInt).toArray();これにより,int整数をint配列に入れ,各数値間を加算できる.文で各ビット数の和を求め、その値を元の値で除算し、残りの値がない場合はtrueを返し、そうでない場合はfalseを返します.
2022.04.14
整数nを受け入れ、nのすべての約数加算値を返す関数は、解を完了してください.
🔎 内蔵
Scannerで整数を入力し、for文で入力した数を1から入力した数で割って約数を求め、そのまま答えに加算します.
2022.04.15
数学は数学を放棄する人の略語である.「囚人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...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.
🔎 内蔵
残念ながらコードはあまり効率的ではありませんが、解くことに意味があります.
問題を解くときに一番悩んでいるのは、ルールが組まれたシナリオをどのように答えの長さと比較するか、最終的な戻り値はシナリオの最大値の1つ以上である可能性があるため、シナリオの長さが異なる可能性があることです.ルールに従って3つの配列を作成し、配列の長さ(ルールの長さ)に従って%を行い、繰り返します.配列長の変化は配列リストを用い,条件に応じて長さを増やして用いることができる.次に、配列リストをint配列に渡すために.stream().mapToInt(Integer::intValue).toArray()を使用しました.
1.小数を作成
質問する
与えられた数字のうち3つの数字を小数に加算すると、個数を求めてみます.数値を持つ配列numsをパラメータとする場合は、solution関数を完了してnumsの3つの異なる数値の小数を返します.
🔎 内蔵
class Solution {
public int solution(int[] nums) {
int answer = -1;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
System.out.println("Hello Java");
return answer;
}
}
に答える
📃 コミットコード
class Solution {
public int solution(int[] nums) {
int answer = 0;
int sum;
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];
for(int x=2; x<=sum; x++) {
if (sum % x == 0 && x != sum) break;
else if(x==sum) answer++;
}
}
}
}
return answer;
}
}
💡 完全なコード
import java.util.Scanner;
public class Solution {
public static int solution(int[] nums) {
int answer = 0;
int sum;
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];
for(int x=2; x<=sum; x++) {
if (sum % x == 0 && x != sum) break;
else if(x==sum) answer++;
}
}
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("개수 입력 : ");
int input = sc.nextInt();
int[] nums = new int[input];
for(int i=0; i<nums.length; i++)
nums[i] = sc.nextInt();
System.out.println("결과 : "+solution(nums));
}
}
📌 説明する
3重for文を用いてsumに3つの値を順次加算し,sumが小数であることを決定するためにfor文を回した後if文を用いて2からsumで割って小数を求める.三重forクエリの効率を向上させるには,不要な部分を減らす必要があり,else ifとxが同時に無応答器に追加する必要がある.
2022.04.12
2.自然数を逆さに並べる
質問する
自然数nを逆さまにして、各数字を要素の配列で返します.例えば、nが12345の場合、[5,4,3,2,1]が返される.
🔎 内蔵
class Solution {
public int[] solution(long n) {
int[] answer = {};
return answer;
}
}
に答える
📃 コミットコード
import java.util.stream.Stream;
class Solution {
public int[] solution(long n) {
int[] answer = {};
int[] origin = Stream.of(String.valueOf(n).split("")).mapToInt(Integer::parseInt).toArray();
answer = new int[origin.length];
int leng = origin.length-1;
for(int i=0; i<=leng; i++){
answer[i] = origin[leng-i];
}
return answer;
}
}
💡 完全なコード
import java.util.Scanner;
import java.util.stream.Stream;
public class Solution {
public static int[] solution(long n) {
int[] answer = {};
int[] origin = Stream.of(String.valueOf(n).split("")).mapToInt(Integer::parseInt).toArray();
answer = new int[origin.length];
int leng = origin.length-1;
for(int i=0; i<=leng; i++){
answer[i] = origin[leng-i];
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long num = sc.nextLong();
for(int i=0; i<solution(num).length; i++){
System.out.print(solution(num)[i]+" ");
}
}
}
📌 説明する
整数型intをint配列に変換するためにfor文の代わりにメソッドを用いた.String.ValueOfを使用してStringアレイとStreamに変換します.of(String配列).mapToInt(Integer::parseInt).toArray();String配列をint配列に変換します.これによりintをint配列に変換します.その後,for文を用いて元の配列の値を逆さにして答え配列に入れる.
2022.04.13
3.ハザード数
質問する
正の整数xを下のスケール数にするには、xをxの桁数の和で除算する必要があります.例えば、18の桁数の和は1+8=9であり、18は9で除算されるので、18は下付き文字数となる.自然数xを入力し、xがハザード数の関数かどうかをチェックし、解を完了します.
🔎 内蔵
class Solution {
public boolean solution(int x) {
boolean answer = true;
return answer;
}
}
に答える
📃 コミットコード
import java.util.stream.Stream;
class Solution {
public boolean solution(int x) {
boolean answer = true;
int sum = 0;
int[] arr = Stream.of(String.valueOf(x).split("")).mapToInt(Integer::parseInt).toArray();
for(int i=0; i< arr.length; i++)
sum += arr[i];
if(x%sum==0) return answer;
else answer = false;
return answer;
}
}
💡 完全なコード
import java.util.Scanner;
import java.util.stream.Stream;
public class Solution {
public static boolean solution(int x) {
boolean answer = true;
int sum = 0;
int[] arr = Stream.of(String.valueOf(x).split("")).mapToInt(Integer::parseInt).toArray();
for(int i=0; i< arr.length; i++)
sum += arr[i];
if(x%sum==0) return answer;
else answer = false;
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(solution(num)) System.out.println("하샤드 수입니다.");
else System.out.println("하샤드 수가 아닙니다.");
}
}
📌 説明する
Stream.of(String.valueOf(x).split("")).mapToInt(Integer::parseInt).toArray();これにより,int整数をint配列に入れ,各数値間を加算できる.文で各ビット数の和を求め、その値を元の値で除算し、残りの値がない場合はtrueを返し、そうでない場合はfalseを返します.
2022.04.14
4.薬水の和
質問する
整数nを受け入れ、nのすべての約数加算値を返す関数は、解を完了してください.
🔎 内蔵
class Solution {
public int solution(int n) {
int answer = 0;
return answer;
}
}
に答える
📃 コミットコード
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1; i<=n; i++)
if(n%i==0) answer+=i;
return answer;
}
}
💡 完全なコード
import java.util.Scanner;
public class Solution {
public static 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 sc = new Scanner(System.in);
int num = sc.nextInt();
System.out.println(solution(num));
}
}
📌 説明する
Scannerで整数を入力し、for文で入力した数を1から入力した数で割って約数を求め、そのまま答えに加算します.
2022.04.15
5.模擬試験
質問する
数学は数学を放棄する人の略語である.「囚人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...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.
🔎 内蔵
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
return answer;
}
}
に答える
📃 コミットコード
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
List<Integer> answer_list = new ArrayList<Integer>();
int[] cnt = new int[3];
int[] one = {1,2,3,4,5};
int[] two = {2,1,2,3,2,4,2,5};
int[] three = {3,3,1,1,2,2,4,4,5,5};
int[] one_a = new int[answers.length];
int[] two_a = new int[answers.length];
int[] three_a = new int[answers.length];
for(int i=0; i < answers.length; i++){
one_a[i] = one[i%one.length];
two_a[i] = two[i% two.length];
three_a[i] = three[i% three.length];
}
for(int i=0; i< answers.length; i++){
if(answers[i]==one_a[i]) cnt[0]++;
if(answers[i]==two_a[i]) cnt[1]++;
if(answers[i]==three_a[i]) cnt[2]++;
}
if(cnt[0]>cnt[1]&&cnt[0]>cnt[2]) answer_list.add(1);
else if(cnt[1] > cnt[0] && cnt[1] > cnt[2]) answer_list.add(2);
else if(cnt[2] > cnt[0] && cnt[2] > cnt[1]) answer_list.add(3);
else if(cnt[0] == cnt[1]){
if(cnt[0]==cnt[2]){
for(int i=0; i<3; i++)
answer_list.add(i+1);
}else{
for(int i=0; i<2; i++)
answer_list.add(i+1);
}
}else if(cnt[1]==cnt[2]){
for(int i=0; i<2; i++)
answer_list.add(i+2);
}else{
answer_list.add(1);
answer_list.add(3);
}
answer = answer_list.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
💡 完全なコード
package programmers;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Solution {
public static int[] solution(int[] answers) {
int[] answer = {};
List<Integer> answer_list = new ArrayList<Integer>();
int[] cnt = new int[3];
int[] one = {1,2,3,4,5};
int[] two = {2,1,2,3,2,4,2,5};
int[] three = {3,3,1,1,2,2,4,4,5,5};
int[] one_a = new int[answers.length];
int[] two_a = new int[answers.length];
int[] three_a = new int[answers.length];
for(int i=0; i < answers.length; i++){
one_a[i] = one[i%one.length];
two_a[i] = two[i% two.length];
three_a[i] = three[i% three.length];
}
for(int i=0; i< answers.length; i++){
if(answers[i]==one_a[i]) cnt[0]++;
if(answers[i]==two_a[i]) cnt[1]++;
if(answers[i]==three_a[i]) cnt[2]++;
}
if(cnt[0]>cnt[1]&&cnt[0]>cnt[2]) answer_list.add(1);
else if(cnt[1] > cnt[0] && cnt[1] > cnt[2]) answer_list.add(2);
else if(cnt[2] > cnt[0] && cnt[2] > cnt[1]) answer_list.add(3);
else if(cnt[0] == cnt[1]){
if(cnt[0]==cnt[2]){
for(int i=0; i<3; i++)
answer_list.add(i+1);
}else{
for(int i=0; i<2; i++)
answer_list.add(i+1);
}
}else if(cnt[1]==cnt[2]){
for(int i=0; i<2; i++)
answer_list.add(i+2);
}else{
answer_list.add(1);
answer_list.add(3);
}
answer = answer_list.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int q_num = sc.nextInt();
int[] answers = new int[q_num];
for(int i=0; i< answers.length; i++)
answers[i] = sc.nextInt();
System.out.println(Arrays.toString(solution(answers)));
}
}
📌 説明する
残念ながらコードはあまり効率的ではありませんが、解くことに意味があります.
問題を解くときに一番悩んでいるのは、ルールが組まれたシナリオをどのように答えの長さと比較するか、最終的な戻り値はシナリオの最大値の1つ以上である可能性があるため、シナリオの長さが異なる可能性があることです.ルールに従って3つの配列を作成し、配列の長さ(ルールの長さ)に従って%を行い、繰り返します.配列長の変化は配列リストを用い,条件に応じて長さを増やして用いることができる.次に、配列リストをint配列に渡すために.stream().mapToInt(Integer::intValue).toArray()を使用しました.
Reference
この問題について(3週目の解答), 我々は、より多くの情報をここで見つけました https://velog.io/@juwan-25/3주차-문제풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol