728x90
🔥 문제 설명
자연수 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의 값이 123이라면 1+2+3 이렇게 자르면 되지만 1023이라면 10+2+3 이걸 어떻게 알 수 있을까?
- 그래서 N 나누기 10을 해서 나머지(%), 몫(/)의 값을 사용해 문제를 풀기로 했다
- while문을 사용해 n이 0이 되면 반복문을 빠져나가게 조건을 걸어주었다
- 자연수 N의 값이 123이라고 했을 때 맨 처음 while문으로 들어와서 n%10를 하게 되면 123%10의 나머지는 3 몫은 12가 되고 나머지는 answer 변수에 +=해주고 몫은 n에 대입해 준다
- 그렇게 3차까지 계산을 하면 몫이 0이 되기 때문에 while 문을 탈출하고 answer의 값은 6이 된다.
🔥 코드
int solution(int n) {
int answer = 0;
while (n > 0){
answer += n%10;
n = n /10;
}
return answer;
}
🔥 문제를 풀면서 헷갈렸던 부분
1 % 10을 했을 때 몫은 0.1이 되고 나머지가 나올 수가 없는 거 같은데 어떻게 나오지..? 순간 헷갈려서 찾아보았고 아래의 블로그를 보고 이해했다
https://www.todayhumor.co.kr/board/view.php?table=jisik&no=199659
이해에 도움이 된 댓글 중 하나이다.
나머지는 초등학교 때 소수의 개념을 안 배우고 자연수로만 계산할 때 나온 거죠. 몫과 나머지.
예를 들어 8 나누기 3 하면 몫이 2이고 나머지가 2죠.
1 나누기 2는 나눌 수가 없으므로 몫은 0이고 나머지가 1입니다.
728x90
'프로그래머스' 카테고리의 다른 글
[프로그래머스 JAVA] 나머지가 1이 되는 수 찾기 (0) | 2024.07.03 |
---|---|
[프로그래머스 JAVA] x만큼 간격이 있는 n개의 숫자 (0) | 2024.07.03 |
[프로그래머스 JAVA] 평균 구하기 (0) | 2024.07.03 |
[프로그래머스 JAVA] 문자열을 정수로 바꾸기 (0) | 2024.07.03 |
[프로그래머스 JAVA] 문자열 내 p와 y의 개수 (0) | 2024.07.03 |