프로그래밍 문제 22번 자릿수 더하기
언어 : Java
문제번호: 22번
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
- N의 범위 : 100,000,000 이하의 자연수
N | answer |
123 | 6 |
987 | 24 |
입출력 예시 #1
문제의 예시와 같습니다.
입출력 예시 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
- N의 범위 : 100,000,000 이하의 자연수
Solution.Java
public class Solution {
public int solution(int n) {
int answer = 0;
int a = 0;
while(true) {
a = n%10;
n = n/10;
answer += a;
if(n==0) break;
}
return answer;
}
}
답안 도출 과정 :
1. 정수를 받을 수 있는 인트 형 타입으로 answer 와 a 를 선언하고, 초기화 한다.
2. while 조건문을 활용, true 일경우에 a 는 n을 10으로 나눈 나머지가 되도록 한다.
n을 10으로 나누는것은 예를 들어 문제의 입출력값 예시대로 123 의 각자리 숫자를 구할때
123 을 10으로 나눈 나머지 -> 3이 세번째 자리 숫자가 된다.
12 를 10으로 나눈 나머지 -> 2가 두번째 자리 숫자가 된다.
1을 10으로 나눈 나머지 -> 1이 첫번째 자리 숫자가 된다.
즉, 각 자리수를 구하기 위해서는 숫자의 길이를 하나씩 줄여가면서 10으로 나눈 나머지를 구하는 로직이 필요하다.
숫자의 길이를 하나씩 줄여가려면 n을 10으로 나눠 준 몫을 생각하면 된다.
N= 123일 경우 10으로 나눠준 몫 12가 123에서 12로 숫자의 길이를 줄인 상태가 된다.
123 에서 12로 숫자 길이를 줄였다면 10으로 나눈 나머지로 두번째 자릿수를 구할 수 있다.
3. 때문에 n을 10으로 나눈 몫이 n에 들어가도록 하고
n = n/10;
3. n을 10으로 나눈 나머지가 a에 들어가도록 해서
a = n%10;
4. answer에 a의 값을 계속해서 더해간다. ( while 문을 빠저나오기 전까지)
answer += a;
5. if 조건문을 활용해서 n 이 0이 되는 순간 break 를 통해 빠저 나가도록 한다.
if(n==0) break;
6. answer로 값을 리턴한다.
실행메소드 추가
public class Solution22 {
public int solution22(int n) {
int answer = 0;
int a = 0;
while(true) {
a = n%10;
n = n/10;
answer += a;
if(n==0) break;
}
return answer;
}
public static void main(String[] args) {
Solution22 solution22 = new Solution22();
int n = 123;
System.out.println(solution22.solution22(n));
}
}