본문 바로가기
내일배움캠프/Daily Routine (알고리즘)

[내일배움캠프] 알고리즘 Daily Routine 13. 자릿수 더하기

by TIP__ 2024. 8. 27.

안녕하세요.
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보다 작으므로 반복문 탈출

 

저처럼 처음해보시는 분들에게 이 글이 조금이나마 도움이 되었으면 좋겠습니다.

댓글