https://www.acmicpc.net/problem/4673
public class Main {
public static boolean isSelf(int num) {
for(int i=0; i<num; i++) { // i는 0부터 num-1까지
int sum = i;
String num2 = Integer.toString(i); // 각 자리수를 구하기 편하게 변환
for(int j=0; j<num2.length(); j++) {
sum += num2.charAt(j) - '0'; // 각 자리수 만큼 sum에 더해줌
}
if(sum == num) // 만약에 sum이 num과 같다면 생성자가 있으므로 셀프넘버가 아님
return false; // false 리턴
}
return true; // 셀프넘버가 맞다면 true리턴
}
public static void main(String[] args){
int num = 1;
while(num<=10000) { // num은 1부터 10000까지
if(isSelf(num) == true) // 반환값이 true라면 셀프 넘버이므로
System.out.println(num); // num 출력
num++; // 다음 num
}
}
}
풀이 :
생성자가 없는 수가 셀프 넘버이다.
1. 1부터 10000까지 셀프 넘버를 출력해야한다.
2. 셀프 넘버인지 알아보기 위해 메소드 isSelf를 사용한다
3. 반환값이 true라면 셀프 넘버이고 반환값이 false라면 셀프 넘버가 아니다.
- main메소드의 while문 :
num을 하나씩 늘려가면서 셀프 넘버인 것만 출력한다.
- isSelf메소드
'코딩테스트 > 백준' 카테고리의 다른 글
[백준-자바] 1110번 더하기 사이클 / 2022.02.05 (0) | 2022.02.05 |
---|---|
[백준-자바] 1065번 한수 / 2022.02.01 (0) | 2022.02.01 |
[백준-자바] 1978번 소수 찾기 / 2022.01.30 (0) | 2022.01.30 |
[백준-자바] 2581번 소수 / 2022.01.29 (0) | 2022.01.29 |
[백준-자바] 2839번 설탕 배달 / 2022.01.27 (0) | 2022.01.27 |