[プログラマ]小数-Java,Javaの作成
難易度
レベル1
質問する
https://programmers.co.kr/learn/courses/30/lessons/12977
に答える
与えられた数の中から3つを選ぶ->インバーストレースによるアクセス
問題の採点速度は少し遅いが、答えは正しい.
1級ですが、複雑に考えているようなので、他の解答を探して、for文で簡単に3つの数を求める方法を知りました.
1級で難しく考えすぎず、簡単な方法で問題を解決する方法を育てましょう.
コード#コード#
1)for文で3つの数の和を求める
import java.util.*;
class Solution {
public int sum;
public int answer = 0;
public int solution(int[] nums) {
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++) {
System.out.println(nums[i] + " " + nums[j] + " " + nums[k]);
int num = nums[i] + nums[j] + nums[k];
if (isPrime(num)) {
answer++;
}
}
}
}
return answer;
}
public boolean isPrime(int x) {
if (x == 0 || x == 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0)
return false;
}
return true;
}
}
1)遡及により3つの数の和を求めるimport java.util.*;
class Solution {
public boolean[] visit;
public int[] arr;
public int sum;
public int answer = 0;
public int solution(int[] nums) {
visit=new boolean[nums.length];
arr = new int[3];
dfs(0,nums,0);
return answer;
}
public void dfs(int depth, int[] nums, int start) {
if (depth == 3) {
for (int val : arr) {
sum += val;
}
System.out.println(sum);
if (isPrime(sum)) {
answer++;
}
sum = 0;
return;
}
for (int i = start; i < visit.length; i++) {
if (!visit[i]) {
visit[i] = true;
arr[depth] = nums[i];
dfs(depth + 1, nums, i);
visit[i] = false;
}
}
}
public boolean isPrime(int x) {
if (x == 0 || x == 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0)
return false;
}
return true;
}
}
Reference
この問題について([プログラマ]小数-Java,Javaの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@kimmjieun/프로그래머스-소수-만들기-Java-자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol