문자열 정수의 합
https://school.programmers.co.kr/learn/courses/30/lessons/181849
문제 풀이
1 2 3 4 5 6 7 8 9 10 11 12 13
class Solution { public int solution(String num_str) { int sum = 0; int num = Integer.parseInt(num_str); while (num > 0) { sum += num % 10; // 9 num = num / 10; // 12345678 } return sum; } }
num_str
이라는 문자열을 정수로 변환하는 부분에서 문제가 발생할 수 있다.Integer.parseInt()
메서드는 문자열이 숫자로만 구성되어 있을 때만 제대로 작동한다. 만약num_str
에 숫자가 아닌 문자나 음수가 포함되어 있다면Integer.parseInt()
는 런타임 에러(NumberFormatException
)를 발생시킬 수 있다.- 따라서 코드 실행 전에
num_str
에 숫자 이외의 문자가 포함되어 있는지 검증하는 부분을 추가하는 것이 좋다.try-catch
구문을 사용하여 변환 과정에서 예외를 처리하고, 숫자가 아닌 문자가 들어있을 경우에는 적절한 예외 처리를 해주는 것이 좋다.
1 2 3 4 5 6 7 8 9 10 11 12
// 문자열에 있는 각 문자를 숫자로 변환하여 합을 계산 class Solution { public int solution(String num_str) { int sum = 0; for (int i = 0; i < num_str.length(); i++) { sum += Character.getNumericValue(num_str.charAt(i)); } return sum; } }
Character.getNumericValue()
: 주어진 문자의 숫자 값을 반환하는 메서드이다. 이 메서드는 주어진 문자가 숫자인 경우 해당 숫자 값을, 숫자가 아닌 경우 -1을 반환한다. 예를 들어, ‘0’은 0으로, ‘1’은 1로, ‘9’는 9로 변환된다.
1 2 3 4 5 6 7 8 9 10 11
class Solution { public int solution(String num_str) { int sum = 0; for (char c : num_str.toCharArray()) { sum += Character.getNumericValue(c); } return sum; } }
- 문자열을 문자 단위로 순회하며
Character.getNumericValue()
를 사용하여 각 문자를 숫자로 변환하고 그 값을 더한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.