JOO's note

문자열이 아닌 숫자에서 각자리의 숫자 뽑아오기 본문

Back-End/알고리즘

문자열이 아닌 숫자에서 각자리의 숫자 뽑아오기

pli3452 2015. 1. 8. 12:40

[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