3週目の解答
32183 ワード
小数を作成
問題の説明
与えられた数字のうち3つの数字を小数に加算すると、個数を求めてみます.数値を持つ配列numsをパラメータとする場合は、solution関数を完了してnumsの3つの異なる数値の小数を返します.
せいげんじょうけん
I/O例
numsresult[1,2,3,4]1[1,2,7,6,4]4
きほんコード
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;
for(int i=0; i<nums.length; i++){
for(int j=i+1; j<nums.length; j++){
for(int k=j+1; k<nums.length; k++){
if(isPrime(nums[i]+nums[j]+nums[k])) {
answer++;
}
}
}
}
return answer;
}
boolean isPrime(int num){
for(int i=2; i*i<=num; i++){
if(num%i == 0) return false;
}
return true;
}
}
問題を解く
この問題を解くには2つの要点がある.
2番目の積分素数を求める方法は,エラトネスのふるいを適用した.詳細はリンクで共有されます.2から欲しい数字まで、自分以外のすべての倍数を削除する方法を簡単に説明します.最後には倍数に属さない数、すなわち少数しか残っていない.isPrimeは必要な数字を受け入れ,繰り返し文で排水を除去する.残りがない場合はfalseを返します.倍数です.重複文を終了すると、trueが返されます.これは、倍数のない数、すなわち少数であるためです.isPrimeを受け入れ、trueであれば少数なので回答を増やします.
質問リンク🔗 : 小数を作成
自然数を配列に反転
問題の説明
自然数nを逆さまにして、各数字を要素の配列で返します.例えば、nが12345の場合、[5,4,3,2,1]が返される.
せいげんじょうけん
I/O例
nreturn12345[5,4,3,2,1]
きほんコード
class Solution {
public int[] solution(long n) {
int[] answer = {};
return answer;
}
}
正しいコード
import java.util.*;
class Solution {
public int[] solution(long n) {
StringBuilder sb = new StringBuilder(Long.toString(n));
String re = sb.reverse().toString();
int[] answer = new int[re.length()];
for(int i=0; i<answer.length; i++)
answer[i] = re.charAt(i)-'0';
return answer;
}
}
問題を解く
これは問題を解く順番です.
1.数値を文字列に変換して反転
2.反転文字列のサイズで配列を作成する
3.各文字を整数に変換して答えに入れる
まず、数値を文字列に変換します.入力した数字が長いのでLongtoString()を使用して文字列に置き換えます.次にStringBuilderを使用して文字列を反転します.
反転文字列のサイズに基づいて、答え配列のサイズを指定します.次に、並べ替えの大きさに応じて、繰り返し文をアルファベット順に並べます.一字一字持ってくる方法はcharatです.最も重要なのは,答えの配列タイプがintであるため,
char to int
を行う必要がある.ハザード数
問題の説明
正の整数xを下のスケール数にするには、xをxの桁数の和で除算する必要があります.例えば、18の桁数の和は1+8=9であり、18は9で除算されるので、18は下付き文字数となる.自然数xを入力し、xがハザード数の関数かどうかをチェックし、解を完了します.
せいげんじょうけん
I/O例
arrreturn10true12true11false13false
きほんコード
class Solution {
public boolean solution(int x) {
boolean answer = true;
return answer;
}
}
正しいコード
class Solution {
public boolean solution(int x) {
String str = String.valueOf(x);
int s = 0;
for(int i=0; i<str.length(); i++)
s+=str.charAt(i)-'0';
if(x%s == 0 )return true;
else return false;
}
}
問題を解く
まず,ハザード数の定義を考察すると,
x의 자릿수의 합으로 x가 나눠지는 수
である.したがって,解題過程は大きく2つに分類できる.まずxの桁数の和を求める.数字を求めるにはいろいろな方法がありますが、個人的には文字列に変換して数字を得るのが好きです.Stringはx値を文字列に変換します.valueOf()を使用しました.繰り返し文を文字列の長さで回転させ、各文字をint型に変換して追加します.各文字にcharatを使用し、charをintに変換するために「0」を削除します.
桁数の和を求めると、xを和で割って残りの数字があるかどうかをチェックします.余っていなければ、分かれた数なのでハザード数です.
質問リンク🔗 : ハザード数
薬水の和
問題の説明
整数nを受け入れ、nのすべての約数加算値を返す関数は、解を完了してください.
せいげんじょうけん
I/O例
nreturn122856
きほんコード
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;
}
}
問題を解く
薬を求める方法は簡単です.1から要求される数まで、繰り返し回転ドアをiで割った数が約数である.その原因は、薬水はある数を分けた数であり、残りの数が0であれば、分けた数である.
質問リンク🔗 : 薬水の和
模擬試験
問題の説明
数学は数学を放棄する人の略語である.「囚人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...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.
せいげんじょうけん
I/O例
answersreturn[1,2,3,4,5][1][1,3,2,4,2][1,2,3]
きほんコード
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
return answer;
}
}
正しいコード
class Solution {
public static int[] solution(int[] answers) {
int[] answer;
int[] one = new int[]{1,2,3,4,5};
int[] two = new int[]{2,1,2,3,2,4,2,5};
int[] three = new int[]{3,3,1,1,2,2,4,4,5,5};
int[] score = new int[3];
for(int i=0; i<answers.length; i++){
if(answers[i] == one[i%5]) score[0]++;
if(answers[i] == two[i%8]) score[1]++;
if(answers[i] == three[i%10]) score[2]++;
}
int max = score[0];
for(int i=0; i<3; i++){
if(score[i] > max){ max = score[i]; }
}
int cnt = 0;
for(int i=0; i<3; i++){
if(score[i] == max){ cnt++; }
}
answer = new int[cnt];
int idx = 0;
for(int i=0; i<3; i++){
if(score[i] == max) answer[idx++] = i+1;
}
return answer;
}
}
問題を解く
まず、各学生の解題方法を並べます.学生たちの正解は一定の周期で繰り返されるため、正解が学生の答えと一致すれば、学生一人一人の点数が上がる.次に、点数の最高値を探します.この最価値は順番に返されるので、学生の中で最も価値のある学生が何人いるかを見つけたら、順番に大きさを宣言します.
学生の点数が最低価格に等しい場合は、解答室に学生の番号を入れます.この場合,配列1は小さいため,i+1でなければ学生の番号に入ることができず,答え方は最値を入れるたびにインデックスを増やすので,iではなくidxを用いる.
質問リンク🔗 : 模擬試験
Reference
この問題について(3週目の解答), 我々は、より多くの情報をここで見つけました https://velog.io/@yeonwoo1125/3주차-문제-풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol