울음참고 개발공부
article thumbnail
728x90

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 


 

 

class Solution {
    public int solution(String number) {
       int sum = 0;

       for (char c : number.toCharArray()) {
            sum += c - '0'; // char를 int로 변환하여 덧셈
        }

        return sum % 9;
    }
}

 

1 ) number 문자열을 문자 배열로 변환

 

2 ) 각 자리 숫자를 덧셈하여 sum 에 누적하기 

     이때, 각 문자의 숫자 값은 '0' 에서 빼서 얻을 수 있다.

문자에서 숫자값 얻기
'0' 은 아스키 코드에서 숫자 0의 값을 가지고 있으며, 다른 숫자 문자들은 이 값을 기준으로 숫자값을 가지고 있기 때문에 빼주면 해당 숫자값을 얻을 수 있습니다.
예를 들어 '5' - '0' 은 5를 얻게 됩니다

 

3 ) 문제에서 요구하는 대로, 각 자리수를 더한 값에서 9로 나눈 나머지값을 구한다. 

 

 

 


 

# 문제를 시도하며 오류가 난 경우 

 

class Solution {
    public int solution(String number) {
       int sum = 0;

       sum = Integer.parseInt(number);

        return sum % 9;
    }
}

 

문제 설명대로라면 그냥 9로 나눈 나머지를 반환하면 되지않을까? 싶었다.

 

 

 

 

하지만 수가 큰 경우 다음과 같이 'NumberFormatException' 이 발생했다

 

int 가 아닌 Long 을 사용해보았지만 결과는 마찬가지였고 다른 방향으로 찾아본 결과 위와 같은 답을 낼 수 있었다. 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!