JOO's note
문자열이 아닌 숫자에서 각자리의 숫자 뽑아오기 본문
[4-10] int타입의 변수 num 이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를
완성하라. 만일 변수 num의 값이 12345라면, ‘1+2+3+4+5’의 결과인 15를 출력하라. (1)
에 알맞은 코드를 넣으시오.
[주의] 문자열로 변환하지 말고 숫자로만 처리해야 한다.
[연습문제]/ch4/Exercise4_10.java
class Exercise4_10 {
public static void main(String[] args) {
int num = 12345;
int sum = 0;
// (1) 로직작성
System.out.println("sum="+sum);
}
}
[정답]
while(num > 0) {
sum += num%10;
num /= 10;
}
[해설] 문제4-9에서처럼 문자열에서 charAt(int i)를 이용해서 문자를 숫자로 변환하는
것보다 숫자에서 각 자리수의 숫자를 하나씩 뽑아내는 것은 더 어렵다. 하지만, 숫자의
마지막 자리를 어떻게 뽑아내는지만 알아내면 나머지는 쉽게 해결된다.
방법은 의외로 간단하다 아래와 같이 숫자를 10으로 반복해서 나눠가면서, 10으로 나머
지 연산을 하면 일의 자리를 얻어낼 수 있다.
num num%10
12345 5
1234 4
123 3
12 2
1 1
이 값들을 더하기만하면 변수 num에 저장된 숫자의 각 자리수를 모두 더한 값을 구할 수
있다.
[실행결과]
15
'Back-End > 알고리즘' 카테고리의 다른 글
회문수(palindrome) (0) | 2015.01.08 |
---|---|
문자열이 숫자인지 판별 (0) | 2015.01.08 |
피보나치수열 (0) | 2015.01.08 |
charAt(i)와 char의 문자코드값 (0) | 2015.01.08 |
for문 > while문으로 (0) | 2015.01.08 |
Comments