문제설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,000,000 이하의 자연수
나의 풀이
import java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
// n이 0이 될 때까지 반복
while (n > 0) {
answer += n % 10; //n의 마지막 자릿수를 answer에 더함
n /= 10; // 마지막 자릿수를 제거
}
return answer;
}
- while 루프는 n이 0보다 큰 동안 반복. (n의 모든 자릿수를 처리할 때까지 반복)
- n % 10은 n의 마지막 자릿수를 구함. ex) n이 123이면 n % 10은 3을 반환.
- answer += n % 10은 answer에 마지막 자릿수를 더함
- n /= 10은 n의 마지막 자릿수를 제거. ex) n이 123이면 n /= 10 후에는 12.
- 이 과정을 반복하여 모든 자릿수를 answer에 더함
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(sol.solution(123)); // 6
System.out.println(sol.solution(987)); // 24
}
}
참고할 만한 다른 사람의 풀이
import java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
while(true){
answer+=n%10;
if(n<10)
break;
n=n/10;
}
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
System.out.println("Hello Java");
return answer;
}
}
- 내가 작성한 코드는 while(n>0) 조건을 사용해 n이 0보다 큰 동안 루프를 계속하지만 이 코드는 while(true) 무한 루프를 사용한 후, n이 10보다 작을때 break 로 루프를 종료함.
'break' 주의사항
- 가독성 : 코드가 더 명확하고 가독성이 좋아지지만 과도한 사용은 코드를 복잡하게 만들 수 있음
- 반복문 탈출 : 가장 가까운 반복문 또는 switch 문만 탈출함. 중첩된 반복문에서는 내부의 반복문만 종료되므로 주의해야함
- 루프 조건 : break 를 사용하는 무한 루프에서는 탈출 조건을 명확히 정의 하는 것이 중요함.