http://euler.synap.co.kr/prob_detail.php?id=51
제 코드 말고 다른 분 코드 보세요.
머리가 안돌아가서 꾸역꾸역 풀었네요.
Skillist 설명---------------------------------------------------------------------------------
public static void main (String[] args){
boolean sosuTF[] = new boolean[10000001]; //0~1000000
int maxsu = 0;
sosuTF[0]=true;
sosuTF[1]=true;
for(int i=2;i<=10000000;i++){ //에라토스테네스의 체
if(sosuTF[i]){
continue;
}
for(int j=i+i;j<=10000000;j+=i){
sosuTF[j]=true; //합성수
}
}
int start = 10;
int end = 100;
int jarisu = 2;
for(int i=start;i<end;i++){
if(!sosuTF[i]){ //i가 소수이면
for(int j=i+1; j<end;j++){
if(!sosuTF[j]){ //j가 소수이면
String d = judgeD(i,j);
if(!d.equals("0")){ //d가 0,1로 이루어져 있으면
int num = 0;
for(int k=0;k<10;k++){
if(String.valueOf(i+(k*Integer.parseInt(d))).length()!=jarisu){
break;
}
try{
if(!sosuTF[i+(k*Integer.parseInt(d))] && judgeJ(d,i,i+(k*Integer.parseInt(d)))){
num+=1;
}
}catch(Exception e){
break;
}
}
if(num==8){
System.out.print(d + " : " );
System.out.print(i);
for(int k=0;k<10;k++){
//System.out.print((i+(k*Integer.parseInt(d))) + " / ");
}
System.out.println();
return ;
}
}
}
}
}
if(i==end-1){
start*=10;
end*=10;
jarisu+=1;
}
if(start==1000000){
return ;
}
}
}
public static String judgeD(int i,int j){ //공차가 1 or 0으로 이루어진 것 확인
String d="";
int q;
for(q=0;q<String.valueOf(i).length()-String.valueOf(j-i).length();q++){
d+="0";
}
char sameSu = String.valueOf(i).charAt(q);
d+= String.valueOf(j-i);
for(int k=0;k<d.length();k++){
if(d.charAt(k)!='0' && d.charAt(k)!='1'){
return "0";
}
if(d.charAt(k)=='1' && sameSu != String.valueOf(i).charAt(k)){
return "0";
}
}
//System.out.println("통과 : " + d);
return d;
}
public static boolean judgeJ(String d, int i,int j){ //i의 부분과 j의 부분이 같은지 확인
for(int k=0;k<d.length();k++){
if(d.charAt(k) == '0'){
if(String.valueOf(i).charAt(k)!=String.valueOf(j).charAt(k)){
return false;
}
}
}
return true;
}
'코딩 테스트 > Project Euler @ kr' 카테고리의 다른 글
53) 1 ≤ n ≤ 100 일때 nCr의 값이 1백만을 넘는 경우는 모두 몇 번? (0) | 2017.03.06 |
---|---|
52) 2배, 3배, 4배, 5배, 6배의 결과도 같은 숫자로 이루어지는 가장 작은 수 (0) | 2017.03.06 |
50) 1백만 이하의 소수 중 가장 길게 연속되는 소수의 합으로 표현되는 수는? (0) | 2017.03.03 |
49) 세 항이 소수이면서 다른 수의 순열이 되는 4자리 숫자의 등차수열 찾기 (0) | 2017.03.02 |
45) 오각수와 육각수도 되는, 40755 다음으로 큰 삼각수는? (0) | 2017.03.02 |