안녕하세요.
13회차 과제 "자릿수 더하기"입니다.
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한 사항
N의 범위 : 100,000,000 이하의 자연수
While
while문은 반복문의 한 종류입니다.
기본 문법
-. while(true) : While 조건이 true인 경우 반복문이 계속 실행됩니다.
-. while(false) : While 조건이 false인 경우 반복문이 종료됩니다.
break, Continue
-. break : While 반복문을 빠져나갑니다.
-. continue : While 반복문의 처음으로 되돌아갑니다.
* 처음 continue를 보았을 때 어차피 반복문이 종료되지 않으면 처음으로 되돌아가는데 왜? 굳이? continue를 써서 되돌아가야 하나? 라는 생각을 했습니다.
* continue는 해당 구문보다 아래에 있는 코드들(반복문 내의 코드)이 실행되지 않은 상태로 다시 반복문의 처음으로 돌아갑니다.
나누기 연산
나누기 연산자는 '/' 와 '%'가 있습니다.
-. / : 일반적인 나누기 연산
-. % : 나누기를 한 후 나머지를 구하는 연산
예)
-. 100/6 = 16
-. 100%6 = 4
* 100/6은 산술 그대로의 결과를 출력합니다.
* 100%6은 6의 배수 중 100미만의 값을 출력하여 차이를 구한다 라고 생각하시는 게 좀 더 쉽게 접근할 수 있을 것 같습니다.
말로 하니 어려워보이지만 6의 배수 중 100 미만의 값은 6 * 16 = 96 이므로 100 - 96 = 4를 출력한다고 볼 수 있습니다.
답안
public class Solution {
public int solution(int n) {
int answer = 0;
while(true){
answer +=n%10;
if (n<10) break;
n=n/10;
}
return answer;
}
}
-. while(true) 반복문을 사용하였고 n이 10보다 작아지게 되면 반복문을 종료합니다.
-. n%10 연산을 사용하여 맨 마지막 1자리수를 출력하여 그 값을 더했습니다.
-. 반복할 때마다 n/10 연산을 사용하여 n의 자릿수를 줄였습니다.
예) n = 123인 경우
n%10 = 3
answer = 0 + 3
n/10 = 12
loop (n = 12로 바뀜)
n%10 = 2
answer = 3 + 2
n/10 = 1
loop (n = 1로 바뀜)
n%10 = 1
answer = 3 + 2 + 1
n이 10보다 작으므로 반복문 탈출
저처럼 처음해보시는 분들에게 이 글이 조금이나마 도움이 되었으면 좋겠습니다.
'내일배움캠프 > Daily Routine (알고리즘)' 카테고리의 다른 글
[내일배움캠프] 알고리즘 Daily Routine 15. 나머지가 1이 되는 수 찾기 (0) | 2024.08.27 |
---|---|
[내일배움캠프] 알고리즘 Daily Routine 14. 약수의 합 (0) | 2024.08.27 |
[내일배움캠프] 알고리즘 Daily Routine 12. 평균 구하기 (0) | 2024.08.20 |
[내일배움캠프] 알고리즘 Daily Routine 11. 짝수와 홀수 (0) | 2024.08.20 |
[내일배움캠프] 알고리즘 Daily Routine 10. 배열의 평균값 (0) | 2024.08.20 |
댓글