답안 :
에라토네스의 체를 사용한답안.
public class Solution {
//에라토네스의 체를 사용하여 3000이하의 소수를 먼저확인 후 sum값이 소수인지 확인 후 리턴.
//fasle 가 소수
public boolean primeSol(int sum) {
boolean prime[] = new boolean[3000];
prime[0] = prime[1] = true;
for (int i = 2; i < prime.length; i++) {
if (!prime[i]) {
for (int j = i * i; j < prime.length; j += i) {
prime[j] = true;
}
}
}
return prime[sum];
}
3개의 값을 전부 더한 후 소수의 값을 확인.
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 z = j + 1; z < nums.length; z++) {
int sum = nums[i] + nums[j] + nums[z];
if (!primeSol(sum)) {
answer++;
}
}
}
}
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
int[] num = { 1, 2, 7, 6, 4 };
System.out.println(s.solution(num));
}
}
에라토네스의 체 : n이하의 소수를 구하는 가장 간단하고 빠른방법.
소수를 제외한 소수의 배수부터 N의배수까지를 전부 제거하여 소수만 남는 기법이다.


알고리즘 설명 : 에라토네스의 체 알고리즘을 사용하여 최대값인 3000이하의 소수를 판별해낸뒤 배열로저장. 후에 sum값을 idx로 이용하여 소수인지 아닌지 판별.
보완사항 : 메서드가 실행될때마다 3000까지의 연산을 N번하고있음. 1번만 계산하고 배열을 저장하고있으면 더 효율적일거같음.
LIST 를 사용한 답안
import java.util.ArrayList;
public class Solution {
public int solution(int[] nums) {
int answer = 0;
ArrayList<Integer> arr1 = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
for (int z = j + 1; z < nums.length; z++) {
int sum = nums[i] + nums[j] + nums[z];
arr1.add(sum);
}
}
}
for (int i = 0; i < arr1.size(); i++) {
boolean flag = false;
for (int j = 2; j < arr1.get(i); j++) {
if (arr1.get(i) % j == 0) {
flag = true;
break;
}
}
if (flag == false) {
answer++;
}
}
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
int[] num = { 1, 2, 7, 6, 4 };
System.out.println(s.solution(num));
}
}
답안 :
SELECT CAR_ID,CAR_TYPE,DAILY_FEE,OPTIONS
from CAR_RENTAL_COMPANY_CAR
where OPTIONS like '%네비게이션%'
order by 1 desc
답안 :
SELECT BOARD_ID,WRITER_ID,TITLE,PRICE,
case when STATUS ='SALE' then '판매중'
when STATUS ='RESERVED' then '예약중'
else '거래완료' end as 'STATUS'
from USED_GOODS_BOARD
where date_format(CREATED_DATE,'%Y-%m-%d')='2022-10-05'
order by 1 desc
답안 :
SELECT a1.APNT_NO, p1.PT_NAME,a1.PT_NO,a1.MCDP_CD,d1.DR_NAME,a1.APNT_YMD
from APPOINTMENT a1
left join PATIENT p1
on a1.PT_NO = p1.PT_NO
left join DOCTOR d1
on a1.MDDR_ID=d1.DR_ID
where a1.APNT_CNCL_YN ='N' AND a1.MCDP_CD ='CS' AND DATE_FORMAT(a1.APNT_YMD,"%Y-%m-%d") = "2022-04-13"
order by 6