본문 바로가기

app/java

알고리즘트레이닝북~~

=-=나름..이책끌린다..ㅋㅋ
요즘 따라 알고리즘 만하고 싶은 나에겐 딱인 나에게 맞춘책..~~
오늘첫문제푸는데22분이걸렸따..-0-ㅎㅎ(잘햇따고쓰다듬어줘~)

어떤정수 n에서 시작해 n이 짝수이면 2로나누고, 홀수면 3을 곱한 다음 1을더한다.
이렇게 n이 1이 될때까지 의 입력값은 두값을 받아 첫번째수 n에서 m 까지의
최대사이클 길이를 구하라.

ex) 1  10  
      100 200


답) 1 10  20
      100 200 125


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class The3nPluse1Problem {

 static int value = 0;
 
 public The3nPluse1Problem(){
  BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
 
  int firstValue=0;
  int secondValue=0;
  int thirdValue = 0;
  System.out.println("첫번째숫자를입력하세요~");
  try {
   firstValue = Integer.parseInt( br.readLine() );
   System.out.println("두번째숫자를입력하세요~");
   secondValue = Integer.parseInt( br.readLine() );
  } catch (NumberFormatException e) {
   
   e.printStackTrace();
  } catch (IOException e) {
   
   e.printStackTrace();
  }
 
  thirdValue = firstValue;
  while(thirdValue != secondValue+1){
   int a = thirdValue;
   int b = 0;
   while(a != 1){
   
    if((a%2) == 0){
     
     a = a/2;
    }else{
     a = (a*3)+1;    
    }
    b++;
   }
   if(value<b)
    value = b+1;  
   
   thirdValue++;
  }
 
  System.out.println(firstValue + "  " + secondValue + "  " + value);
 }
 
 
 public static void main(String[] args) {

  The3nPluse1Problem tp = new The3nPluse1Problem();
 
 }

}

사용자 삽입 이미지



-0-후~나름...while문을 이래저래쓰는것을 이제서야 쬐끔할수 있는거같다..ㅎㅎ
어서..나의실력을!!