문제
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution함수를 완성해주세요
풀이방법
1. 주어지는 정수 n을 Integer.toString()메서드를 통해 문자화 해 String str참조변수에 저장한다.
2.int형의 배열 arr객체를 생성한다.
3. for문을 돌려 stirng타입으로 받은 문자열을 char타입으로 만든뒤 int형으로 바꿔 arr배열에 각각 저장한다.
4.for문을 돌려 answer에 arr안에 있는 숫자들을 모두 더해준다.
답
class Solution {
public int solution(int n) {
String str = Integer.toString(n);
int[]arr = new int[str.length()];
for(int i=0; i <str.length();i++){
arr[i]=str.charAt(i) -'0';
}
int answer=0;
for(int i=0;i<arr.length;i++){
answer=answer+arr[i];
}
return answer;
}
}
*Integer.toString()
가장 많이 사용하는 숫자를 문자로 변환하는 형변환 방법.
사용법
int num = 123;
String str1 = Integer.toString(num);
다른 방법으로는 String.valueOf()를 사용할 수 있다.
*charAt()
String 타입으로 받은 문자열을 char타입으로 한 글자만 받는 함수.
주로 scanner와 같이 응용되어 사용됨
사용법
1. 문자열 받기
public class charat문자받기{
public static void main(String[] args){
String str = "Hello";
for(int i=0;i<str.length();i++){
System.out.print(str.charAt(i)+" ");
}
System.out.println();
}
}
2.숫자 받기
숫자형 문자를 charAt함수로 추출하면 char형이므로 int형으로 변환하려면 아스키코드로 변환된다.
그래서 '0'또는 '48'을 빼줘야 의도대로 계산할 수 있다.
public class charat숫자받기{
public static void main(String[] args){
String str = "12345";
for(int i=0;i<str.length();i++){
System.out.print((str.charAt(i)-'0')+" ");
}
System.out.println();
}
}
출처:
https://yeoncoding.tistory.com/418
https://gocoder.tistory.com/2412
https://crazykim2.tistory.com/412
https://junghn.tistory.com/entry/자바-int를-자릿수별-int-배열로-분할
https://school.programmers.co.kr/learn/courses/30/lessons/120906