회문수란....?
대칭수 또는 회문수라 부르며,
순서대로 읽은 수와 거꾸로 읽은 수가 일치하는 수를 말한다.
예를 들어 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은 회문수입니다.
이해하기 난해한 문제이다. 여러번 보자...
댓글 없음:
댓글 쓰기