문제 설명
문제가 개인마다 다르게 출제되는 것 같습니다. 저는 숫자 더하기, 별 프린트하기 문제가 출제됐습니다.
2중 for문을 이용한 별 프린트 문제는 간단하니 생략하겠습니다.
자연수 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 하면 됩니다.
문제 풀이
import java.util.*;
public class Solution {
public int solution(int n) {
// 1번
int sum = 0;
while (n > 0){
sum += n % 10;
n /= 10;
}
// 2번
//int sum = 0;
//String temp = String.valueOf(n);
//for(int i = 0; i < temp.length() ; i++){
// sum += temp.charAt(i) - '0';
//}
// 3번
// String temp = String.valueOf(n);
// String[] array = temp.split("");
// int sum = 0;
// for(String i : array){
// sum += Integer.parseInt(i);
// }
return sum;
}
}
- 총 세 가지의 풀이를 작성했습니다.
- 1번 풀이
- 입력 숫자를 10으로 반복해서 나눠가며, 10으로 나머지 연산을 하면 일의 자리를 구할 수 있습니다.
n이 123이라고 가정 하에 n % 10을 하면 3이 도출된다.
이후 n /= 10을하여 n 의 값을 12로 치환한다.
n % 10 을 하면 2가 도출된다.
이후 n /= 10을 하여 n의 값을 1로 치환한다.
이러한 과정을 반복하며 sum 값에 더한다. - 2번 풀이
- n을 문자열로 변환 후 for 문을 통해 charAt(i) - '0' (숫자로 변환) 하여 sum에 더한다. charAt int 변환 글은 아래 링크 참고
- [JAVA] String cart 변환 char int 변환
- 3번 풀이
- 2번 풀이와 비슷하지만 charAt을 통해 자리를 가져오지 않고 split을 통해 배열로 변환 후 캐스팅 후 sum에 더한다.