카테고리1

Chrome (1) GAME (2) HTML (3) Internet Explore (1) Movie (1) TIP (2) Windows (2) java (51) 건강 (1) 맛집 (1)

Post List

2017년 3월 2일 목요일

java]회문수 구하기...

회문수란....?

대칭수 또는 회문수라 부르며,
순서대로 읽은 수와 거꾸로 읽은 수가 일치하는 수를 말한다.
예를 들어 123321은 회문수이고, 123421은 회문수가 아니다.



int val = 1233321;
int tmp = val;

int re = 0;  // 뒤집어서 저장
int num1 = 0, num2=0;

while(tmp != 0){
System.out.println("num1 = re * 10 : "+ num1);
System.out.println("num2 = tmp % 10 : "+ num2);
System.out.println("re = num1+num2 : " + re);
System.out.println("tmp /= 10 : " + tmp);

System.out.println();
num1 = re * 10;  //re의 자리수를 올려서 num1에 저장
num2 = tmp % 10; //tmp/10 의 나머지를 저장... 뒤에서부터 하나씩 빼서 저장됨

re = num1+num2; //re의 자리수 올린 수인 num1에 뒤에서 뺀 수를 더한 후 저장

tmp /= 10; // 끝수를 num2에 저장했으므로 끝수 지우고 재저장
}


if (val == re){
System.out.println(val+"은 회문수입니다.");
}else{
System.out.println(val+"은 회문수가 아닙니다.");
}


*-*-*-

처음
num1 = re * 10 : 0
num2 = tmp % 10 : 0
re = num1+num2 : 0
tmp /= 10 : 1233321

1회전 후
num1 = re * 10 : 0
num2 = tmp % 10 : 1
re = num1+num2 : 1
tmp /= 10 : 123332

2회전 후
num1 = re * 10 : 10
num2 = tmp % 10 : 2
re = num1+num2 : 12
tmp /= 10 : 12333

3회전 후
num1 = re * 10 : 120
num2 = tmp % 10 : 3
re = num1+num2 : 123
tmp /= 10 : 1233

4회전 후
num1 = re * 10 : 1230
num2 = tmp % 10 : 3
re = num1+num2 : 1233
tmp /= 10 : 123

5회전 후
num1 = re * 10 : 12330
num2 = tmp % 10 : 3
re = num1+num2 : 12333
tmp /= 10 : 12

6회전 후
num1 = re * 10 : 123330
num2 = tmp % 10 : 2
re = num1+num2 : 123332
tmp /= 10 : 1


1233321은 회문수입니다.



이해하기 난해한 문제이다. 여러번 보자...

댓글 없음:

댓글 쓰기