본문 바로가기

코딩 테스트/Project Euler @ kr

49) 세 항이 소수이면서 다른 수의 순열이 되는 4자리 숫자의 등차수열 찾기

반응형

http://euler.synap.co.kr/prob_detail.php?id=49


Skillist 설명---------------------------------------------------------------------------------


public static void main (String[] args){

LinkedList<Integer> sosu = new LinkedList<Integer>();

for(int i = 1001; i<10000;i++){ //소수 판별

int temp=0;

for(int j=2;j<i/2;j++){

if(i%j==0){

temp+=1;

break;

}

}

if(temp==0){

sosu.add(i);

}

}

for(int i=0;i<sosu.size()-2;i++){

int now = inputsu(String.valueOf(sosu.get(i))); //1번째 숫자

for(int j=i+1;j<sosu.size();j++){

if(sosu.contains((sosu.get(j)+(sosu.get(j)-sosu.get(i))))){    //등차 수열로 존재할 경우

int here = inputsu(String.valueOf(sosu.get(j)));

if(now == here){ //2번째 숫자가 순열이면

here = inputsu(String.valueOf((sosu.get(j)+(sosu.get(j)-sosu.get(i)))));

if(now == here){ //3번째 숫자가 순열이면

System.out.println(sosu.get(i) + " / " + sosu.get(j) + " / " + (sosu.get(j)+(sosu.get(j)-sosu.get(i))));

}

}

}

}

}

}

public static int inputsu(String su){        //순열 확인

int total=0;

for(int j=0;j<4;j++){

switch(su.charAt(j)-48){

case 0:

break;

case 1:

total+=1;

break;

case 2:

total+=10;

break;

case 3:

total+=100;

break;

case 4:

total+=1000;

break;

case 5:

total+=10000;

break;

case 6:

total+=100000;

break;

case 7:

total+=1000000;

break;

case 8:

total+=10000000;

break;

case 9:

total+=100000000;

break;

}

}

return total;

}

반응형