JOO's note
회문수(palindrome) 본문
[4-15] 다음은 회문수를 구하는 프로그램이다. 회문수(palindrome)란, 숫자를 거꾸로 읽
어도 앞으로 읽는 것과 같은 수를 말한다. 예를 들면 ‘12321’이나 ‘13531’같은 수를 말한
다. (1)에 알맞은 코드를 넣어서 프로그램을 완성하시오.
[Hint] 나머지 연산자를 이용하시오.
[연습문제]/ch4/Exercise4_15.java
class Exercise4_15
{
public static void main(String[] args)
{
int number = 12321;
int tmp = number;
int result =0; // 변수 number를 거꾸로 변환해서 담을 변수
while(tmp !=0) {
// (1) 로직작성
}
if(number == result)
System.out.println( number + "는 회문수 입니다.");
else
System.out.println( number + "는 회문수가 아닙니다.");
} // main
}
[정답]
result = result*10 + tmp % 10;
tmp /= 10;
[해설] 숫자를 역순으로 바꾼 후 원래의 숫자와 비교해서 같으면 회문수이다.예를 들어
원래의 숫자(number)의 값이 12345라면, 역순으로 바꾸면 54321이 될 것이다. 어떻게 하
면 12345를 54321로 바꿀 수 있을까? 각 자리수의 값을 더하는 문제4-10과 같은 방식, 10
으로 나눠가면서 10으로 나머지 연산을 하는 방식으로 각 자리수를 얻을 수 있다. 다만
그냥 더하는 게 아니라 10을 곱해가면서 더하면 숫자를 역순으로 바꿀 수 있다.
result result*10 tmp tmp%10
0 0 12345 5
5 50 1234 4
54 540 123 3
543 5430 12 2
5432 54320 1 1
54321 - 0 -
'Back-End > 알고리즘' 카테고리의 다른 글
로또번호 생성 (0) | 2015.01.09 |
---|---|
2차원배열 (0) | 2015.01.08 |
문자열이 숫자인지 판별 (0) | 2015.01.08 |
피보나치수열 (0) | 2015.01.08 |
문자열이 아닌 숫자에서 각자리의 숫자 뽑아오기 (0) | 2015.01.08 |