반응형
문제설명
자연수 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 하면 됩니다.
Solution.java
내가 푼 풀이
자바스크립트로 푼 방식대로 풀어 for문을 이용해서 풀었습니다.
자바스크립트와 좀 다른점이 많아 문자를 정수로 변환한다던가 answer += Integer.parseInt(str[i]) 로 answer에 str의 i번째 값을 추가하는 방식을 사용하려했지만,
이 방법은 자바에서 먹히지 않아 .substring() 메서드를 이용해 answer에 값을 추가했습니다.
import java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
String str = Integer.toString(n);
for (int i = 0; i < str.length(); i++) {
answer += Integer.parseInt(str.substring(i, i+1));
}
return answer;
}
}
while문을 사용한 풀이
import java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
while (n != 0) {
answer += n % 10;
n /= 10;
}
return answer;
}
}
다른 사람의 풀이를 참고해보니 java에서는 while문을 이용해 푸는 것이 훨씬 편해보였습니다.
✅ 이 코드를 n이 123이라고 가정하여 해석 해보자면 다음과 같습니다.
- n이 0이 될때까지 while문을 반복합니다.
- answer 에 n(123)을 10으로 나눈 나머지 값을 추가합니다 ( 123을 10으로 나눈 나머지는 3이 됩니다. )
▶ answer = 3 - n (123) 을 10으로 나눈 값으로 저장합니다. ( 123을 10으로 나누면 12.3이 되지만 int (정수) 형이므로 12가 남습니다. )
- answer에 12를 나눈 나머지 값을 추가합니다. ( 12를 10으로 나눈 나머지는 2가 됩니다. )
▶ answer = 5 ( 3 + 2 ) - n (12) 을 10으로 나눈 값으로 저장합니다. ( 12를 10으로 나누면 1.2가 되지만 int (정수) 형이므로 1이 남습니다. )
- answer에 n (1) 을 10으로 나눈 나머지 값을 추가합니다 ( 1을 10으로 나누면 나머지는 1이 됩니다. )
▶answer = 6 ( 3 + 2 + 1 ) - n (1) 을 10으로 나눈 값으로 저장합니다. ( 1을 10으로 나누면 0.1 이지만 int (정수) 형이므로 0이 됩니다. )
- n이 0이 되었으므로 while문은 종료됩니다.
- answer의 결과를 반홥합니다. ( answer = 6 )
'◼ 코딩테스트 > 구현 (Implementation)' 카테고리의 다른 글
(Java/자바) 프로그래머스 Lv1 - 하샤드 수 (0) | 2022.10.11 |
---|---|
(Java/자바) 프로그래머스 Lv1 - 정수 제곱근 판별 (0) | 2022.10.11 |
(javascript) - Lv1 : 문자열 내 맘대로 정렬하기 (0) | 2022.10.03 |
[JS/Method] slice(), splice(), split() 에 대해 알아보자. (0) | 2022.09.24 |
(javascript) 알고리즘 - Lv4 단어 퍼즐 (코드별 설명,해석) (1) | 2022.09.22 |