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);
}
}
}