http://euler.synap.co.kr/forum_list.php?p=14&pg=14
Skillist 코드---------------------------------------------------------------------------------
public static void main(String[] args){
long[] array = new long[500001];
for(int i=0;i<500001;i++){
array[i] = 0;
}
long max = 0;
long num = 0;
for(int n = 500000; n<=1000000; n++){
long number = n;
long temp = 0;
while(number != 1){
if(number >= 500000 && number <1000000){
if(array[(int) (number-500000)]==0){
if(number%2 == 0){ //짝수
number = number / 2;
}else{ //홀수
number = (number*3) +1;
}
temp+=1;
}else{
temp += array[(int) (number-500000)];
number = 1;
}
}else{
if(number%2 == 0){ //짝수
number = number / 2;
}else{ //홀수
number = (number*3) +1;
}
temp+=1;
}
}
array[n-500000] = temp;
if(temp>num){
num = temp;
max = n;
}
}
System.out.println(max + " -> " + num);
}
다시 공부------------------------------
public static void main(String[] arg){
int array[] = new int[1000001];
int max = 1;
for(int i=2;i<1000000;i++){
long temp = i;
int num = 0;
//System.out.println(i);
while(temp>1){
if(temp%2==0){ //짝수
temp /=2;
}else{ //홀수
temp = 3*temp +1;
}
num+=1;
try{
if(array[(int)temp]!=0){
num += array[(int)temp];
temp=1;
}
}catch(Exception e){
}
}
array[i] = num;
if(array[max]<num){
max = i;
}
}
System.out.println(max + " / " + array[max]);
}
'코딩 테스트 > Project Euler @ kr' 카테고리의 다른 글
67) 삼각형에서 경로의 합 중 최대값을 구하는 효율적인 방법은? (0) | 2017.02.16 |
---|---|
18) 삼각형을 따라 내려가면서 합이 최대가 되는 경로 찾기 (0) | 2017.02.16 |
16) 2^1000의 각 자리수를 모두 더하면? (0) | 2017.02.15 |
15) 20×20 격자의 좌상단에서 우하단으로 가는 경로의 수 (0) | 2017.02.15 |
12) 500개 이상의 약수를 갖는 가장 작은 삼각수는? (0) | 2017.02.15 |