언어 : 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));
}
}
'알고리즘' 카테고리의 다른 글
| 프로그래머스 코딩테스트 26번 제일 작은 수 제거하기 (0) | 2022.09.29 |
|---|---|
| 프로그래머스 코딩테스트25번 정수 제곱근 판별 (0) | 2022.09.29 |
| 프로그래머스 코딩테스트 문제24번 정수 내림차순으로 배치하기 (0) | 2022.09.29 |
| 프로그래밍 문제 23번 자연수 뒤집어 배열로 만들기 (0) | 2022.09.29 |
| 프로그래밍 문제 21번 이상한 문자 만들기 (0) | 2022.09.27 |
| 프로그래밍 문제 20번 완주하지 못한 선수 (1) | 2022.09.26 |
| 프로그래밍 문제 19번 수박수박수 (1) | 2022.09.26 |
| 프로그래밍 문제 18번 서울에서 김서방 찾기 (1) | 2022.09.26 |