http://euler.synap.co.kr/prob_detail.php?id=36
Skillist 설명---------------------------------------------------------------------------------
public static void main(String[] args){
int total = 0;
for(int i=1;i<1000000;i++){
int same=0;
String now = String.valueOf(i);
for(int j=0;j<now.length()/2;j++){ //숫자 대칭 검사
if(now.charAt(j)!=now.charAt(now.length()-1-j)){
same +=1;
break;
}
}
if(same==0){ //10진법이 대칭이면
int su = i, nowtwo = 1;
String two = "";
while(nowtwo<=i){ //i보다 큰 2의 n승 구하기
nowtwo*=2;
}
nowtwo/=2;
while(nowtwo != 0){ //2진법으로 바꾸기
if(su>=nowtwo){ //2의 n승보다 크면 1 추가;
su-=nowtwo;
two+="1";
}else{ //2의 n승보다 작으면 0 추가;
two+="0";
}
nowtwo/=2;
}
for(int j=0;j<two.length()/2;j++){ //숫자 대칭 검사
if(two.charAt(j)!=two.charAt(two.length()-1-j)){
same +=1;
break;
}
}
if(same==0){ //2진법이 대칭이면
total+=i;
}
}
}
System.out.println(total);
}
다시 공부----------------------------------
public static void main(String arg[]){
int sum = 0;
for(int i=1;i<=1000000;i++){
String temp = String.valueOf(i);
int result = 0;
for(int j=0;j<(temp.length()/2);j++){ //10진수 대칭확인
if(temp.charAt(j)!=temp.charAt(temp.length()-1-j)){ //대칭 아니면 result=1;
result=1;
break;
}
}
if(result==0){ //10진수가 대칭이면
StringBuffer bin = new StringBuffer();
int tempBin = i;
while(tempBin>0){ //2진수 만들기
bin.append(tempBin%2);
tempBin/=2;
}
if(bin.charAt(bin.length()-1)!='0'){
for(int g=0;g<bin.length();g++){ //2진수 대칭 확인
if(bin.charAt(g)!=bin.charAt(bin.length()-1-g)){ //2진수 대칭 아니면 result=1;
result+=1;
break;
}
}
if(result==0){ //2진수도 대칭이면
sum+=i;
}
}
}
}
System.out.println(sum);
}
'코딩 테스트 > Project Euler @ kr' 카테고리의 다른 글
39) 가장 많은 직각삼각형이 만들어지는 둘레(≤ 1000)의 길이는? (0) | 2017.02.26 |
---|---|
38) 어떤 수에 (1, 2, ... )를 곱해서 이어붙여 얻을 수 있는 가장 큰 1 ~ 9 팬디지털 숫자 (0) | 2017.02.25 |
34) 각 자릿수의 팩토리얼을 더했을 때 자기 자신이 되는 수들의 합은? (0) | 2017.02.20 |
33) 이상한 방법으로 약분할 수 있는 분수 찾기 (0) | 2017.02.20 |
32) 1~9 팬디지털 곱셈식을 만들 수 있는 모든 수의 합 (0) | 2017.02.20 |