|
[제한사항]
- N의 범위 : 100,000,000 이하의 자연수
[입출력 예]
추측)
숫자를 문자열로 만들어 각각 잘라 배열을 만든다! 이를 for문으로 하나씩 꺼내 숫자화 시키고 변수하나에 합산시키면 될 듯하다.
소스코드)
public class Solution {
public int solution(int n) {
int answer = 0;
String a = Integer.toString(n);
String[] s_arr = a.split("");
for(int i=0; i<s_arr.length; i++){
answer += Integer.parseInt(s_arr[i]);
}
return answer;
}
}
리뷰)
추측한 대로 결과를 도출하는데 성공했다. 다른 풀이도 보면 형변환없이 10으로 나누어 일의 자리수, 십의 자리수 등 순서대로 뽑아내 각각 더하는 방식도 있었고 심지어 숫자를 문자열화하고 배열로 변환해 아스키코드를 이용한 방법도 있었다.
+ 아스키 코드로 푸는 방식이 너무 신기해서 추가
mport java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
char[] arr = Integer.toString(n).toCharArray();
for(int i = 0; i < arr.length; i++){
answer += arr[i] - 48;
}
return answer;
}
}
여기서 for문 안에 있는 arr[i]를 풀면 9,8,7 들이 출력되는데 이상태로 더하면 24가 아니라 168이 나온다.
왜냐면 출력되는 9,8,7은 숫자가 아니라 char 타입의 문자이기 때문! 따라서 char타입은 int와 연산을 하면 int로 바뀜
각각 9 문자는 57, 8은 56, 7은 55의 int값이 되며 여기서 숫자 9,8,7이 되게 하기 위해서 -48의 값을 연산하게 된 것이다.
알고리즘을 푸는 방법이 이렇게 다양할 수 있구나 싶고 다른 사람들의 다양한 방법을 접하면서 생각을 많이 넓혀보고 싶다는 생각이 든다.
'Coding Test > Algorithm' 카테고리의 다른 글
Programmers] 자연수 뒤집어 배열로 만들기 (0) | 2022.11.19 |
---|---|
+ 추가 문제 (0) | 2022.11.19 |
Programmers] 나누어 떨어지는 숫자 배열 (0) | 2022.11.18 |
Programmers] 완주하지 못한 선수 (0) | 2022.11.18 |
Programmers] 수박수박수박수박수박수? (0) | 2022.11.18 |