문제 설명
정수 n
이 매개변수로 주어질 때 n
의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
제한사항
0 ≤ n
≤ 1,000,000
입출력 예
n | result |
---|---|
1234 | 10 |
930211 | 16 |
입출력 예 설명
입출력 예 #1
입출력 예 #2
나의 풀이
class Solution {
public int solution(int n) {
int sum = 0;
while(n>10) {
sum += n%10;
n /= 10;
if(n<10) {
sum += n%10;
}
}
return sum;
}
}
한번 더 생각해보기
class Solution {
public int solution(int n) {
int sum = 0;
while(n>0) {
sum += n%10;
n /= 10;
}
return sum;
}
}
한번더 생각해 봤을 땐, n > 10 이 아니라, n > 0 이라고 설정해주면 된다. 그럼 if문을 돌 필요가 없으니까! (왜 10이라고 했을까..)
그리고 오랜만에 while 문을 사용해봤는데 확실히 문제를 풀려고 사고하면서 짜다보니까 여러가지 반복문을 써 볼 수 있어서 재밌기도하고 좋은 것 같다.
다른 사람 풀이
class Solution {
public int solution(int n) {
int answer = 0;
String[] s = Integer.toString(n).split("");
for(int i=0; i<s.length; i++){
answer += Integer.parseInt(s[i]);
}
return answer;
}
}
이 생각도 해봤었는데, 형변환 방식에 익숙하지가 않아서 조금 주저했던 것 같다. 그래서 처음엔 while으로 풀자고 생각했고, 분명 String 배열로 만들어서 하나하나 빼준 방법이 있을 거라 생각했는데 역시나 다른 사람 풀이에 있었다!
포인트는 Integer.toString으로 정수를 문자로 형변환을 해주고, .split으로 숫자로 쳤을 때 각 자리수를 따로 따로 나누어주고 for문을 돌린다음에 그걸 다시 .parselInt로 형변환을 해주어 각 숫자들을 하나씩 꺼내어 더해주는 방법이었다.
풀이가 차근차근 눈에 잘들어 오는 것 같아요. 잘보고 갑니다.