YUYANE

JAVA / 각 자릿수의 합을 구하기 (백준 4673번) 본문

Programming Languages/JAVA

JAVA / 각 자릿수의 합을 구하기 (백준 4673번)

YUYA 2020. 11. 23. 16:59

1. 759라는 숫자가 있는데, 각 자리에 위치한 숫자의 합을 구하고 싶다.

예시 ) 7+5+9

 

2. 다음 함수를 이용하자 (모든 변수는 int형)

        while(i!=0){
                sum += i%10;
                i /=10;
            }

  1) 원리는 처음에 10으로 나눈 나머지를 구하여 sum이라는 변수에 더해준다. 

  (i=759, 759에서 10으로 나눈 나머지는 9를 sum에 더함)

  2) 759를 10으로 나누면 75 (int형이라서 소수점 이하는 버린다.)

  3) while 반복문이기 때문에 다시 처음으로 돌아가자.

  4) i = 75가 되고, 75를 10으로 나눈 나머지는 5

   ...

 

 

3. 백준 4673번 문제 풀이

(출력문과 맞추기 위해서 약간 꼼수를 썼다 ㅠ)

public class _4673 {
    public static void main(String[] args) {
        boolean selfnumbers[] = new boolean[10001];
        int sum=0; // 자리수의 합
        int selfnumber =0;
        int x=1;

        for(int i=1; i<10001; i++){
            x=i;
            while(i!=0){
                sum += i%10;
                i /=10;
            }
            selfnumber= x+sum;
            if(selfnumber>10000) {
                break;

            }else{
            selfnumbers[selfnumber]=true; //셀프넘버라면 true
            sum=0;
            i=x;
            }
        }


        for(int i=1; i<9995; i++){
            if(selfnumbers[i]==false)
                System.out.println(i);
        }


    }
}
Comments