본문 바로가기

개발하자/JAVA문제풀이

수뒤집기&회귀수 문제

문제1)수 124 를 뒤집으면 421 이 되고 이 두 수를 합하면 545 가 된다.
124 와 같이 원래 수와 뒤집은 수를 합한 수가 좌우 대칭이 되는 수를 10 에서 100000 까지 모두 출력하라.

입출력 예

출력
10
11
12....

sol)
class A{
 public static void main(String args[]){
  int num;
  int hap;
  int temp2; 
  for(num=10;num<=100000;num++){
   String temp="";
   String t=""+num;
    for(int i=t.length()-1;i>=0;i--){
      temp+=t.charAt(i); //숫자 뒤집어서 담기    
    }

   hap=num+Integer.parseInt(temp);  //두수의 합
   temp2=hap;    //두수의 합을 담은 변수  
  
   int result=0;    //두수의 합을 뒤집은 수 담을 변수 선언
   while(temp2!=0){
     
     result=result*10+temp2%10;    //뒤집은 수 구해서 result에 담기
     temp2/=10;
   
   if(hap==result)    //합과 합을 뒤집은수가 같다면 num출력
    System.out.println(num);
   }

  }

 }
}
문제2)두 수를 입력으로 받아 두수를 뒤집어서 더한 후 더한 결과를 뒤집어서 출력

입력으로 12 와 345 가 입력된다면 21 + 543 = 564 이를 역으로 출력하면 465 이다.

입출력 예

입력
12 345
출력
465

sol)
import java.util.Scanner;
 
class Main{
 public static void main(String[] args){
  Scanner sc = new Scanner(System.in);
  String a=sc.next();
  String b=sc.next();
   String temp1="";
  String temp2="";
  String temp3="";
  if(Integer.parseInt(a)<=100000000&&Integer.parseInt(b)<=100000000){
   for(int i=a.length()-1;i>=0;i--){
      temp1+=a.charAt(i);  //숫자 뒤집어서 담기   
   }
   for(int i=b.length()-1;i>=0;i--){
      temp2+=b.charAt(i);  //숫자 뒤집어서 담기   
   }
   int temp4=Integer.parseInt(temp1)+Integer.parseInt(temp2);
   String temp5=""+temp4;
   for(int i= temp5.length()-1;i>=0;i--){
      temp3+=temp5.charAt(i);  //숫자 뒤집어서 담기   
   }
   System.out.println(temp3);
  }
  else
  System.out.println("입력값의 범위 초과");
 }
}

'개발하자 > JAVA문제풀이' 카테고리의 다른 글

frequency (수의 빈도수 계산)  (0) 2015.01.06
윷놀이  (0) 2015.01.06
버블정렬(재귀함수 사용)  (0) 2015.01.06
이진수로 변경하는 프로그램작성(재귀함수 이용)  (0) 2015.01.06
2진회귀수 문제  (0) 2015.01.06