포스트

문자열 정수의 합

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 라이센스를 따릅니다.