반응형
입력받은 숫자의 각 자릿수를 더하는 문제이므로 Long형 m값을 입력받은 후 10으로 나눈 나머지들을 각각 더하는 방식으로
다음과 같이 작성해서 제출한 결과 런타임 에러가 나왔다.
작은 수에서는 결과값이 잘 나오지만 N은 100자릿수까지 가능하므로
위 그림처럼 입력받은 m값이 19자리를 넘어가게 되면 InputMismatchException이 발생한다.
이를 해결하기위해 n자리수 만큼의 m값을 String형의 문자열로 받은 후 각 자리를 나누어 배열에 저장한다.
이때 저장한 a[i]의 값들은 모두 '0', '1', ... ,'9' 등의 문자 형태이므로 단순히 수식을 붙여 계산하게 되면 '0'일 경우 아스키코드에 대응하는 수인 48이 나오고 '1'은 49 ... '9'는 57이 나오게 된다. int로 변환하여 각a[i]의 값들에 48을 뺀 값들을 sum에 합해주면 원하는 결과를 얻을 수 있다.
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
백준알고리즘 #1929 소수 구하기 java (에라토스테네스의 체) (0) | 2020.12.08 |
---|---|
백준알고리즘 #2748 피보나치 수 2 java (0) | 2020.12.07 |
백준알고리즘 #11654 아스키 코드 java (0) | 2020.11.24 |
백준알고리즘 #5086 배수와 약수 java (0) | 2020.11.23 |
백준알고리즘 #1011 Fly me to the Alpha Centauri java (0) | 2020.11.21 |