반응형
백준 4673 자바 java 셀프 넘버 함수 2단계
1부터 10000까지 셀프넘버를 출력해야 한다. 생성자가 없는 수를 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import java.util.Scanner;
//baekjoon_4673
public class Main{
static boolean selfNum(int n) {
boolean flag = true;
for(int i=1; i<n; i++) {
int sum=i;
int mod=i;
while(mod != 0) {
sum += mod % 10;
mod /= 10;
}
if(n == sum) {
flag = false;
break;
}
}
return flag;
}
public static void main(String[] args) {
for(int i=1; i<=10000; i++)
if(selfNum(i))
System.out.println(i);
}
}
|
cs |
main함수부터 보자.
line 22 : 1~10000이 범위이므로 for문으로 반복한다.
line 23, 24 : i를 함수로 보내서 그 수가 셀프 넘버면 true값으로 반환받아서 출력한다.
line 5 : 자바에서 객체 생성 없이 함수 호출하기 위해선 static으로 작성해야 한다. true false값을 반환할 것이므로 boolean을 리턴 타입으로 한다. 매개변수로는 int값을 받는다.
line 6 : 리턴할 bool변수 선언 true로 초기화.
line 7 : 어떤 수의 생성자가 있는지 없는지 검사한다. n이 39면 33이 생성자인데 1~38까지 for문으로 반복하면서 검사한다.
line 8, 9 : n과 같은 값을 가지는지 검사하기 위해 sum은 본체를 더할 변수 mod는 각각 자릿수를 쪼개서 더할 변수다.
line 10~12 : 10으로 나머지 연산을 하여 각 자릿수를 sum에 더해 준다. 수를 다 쪼개서 더해주면 while문이 끝난다.
line 14 : 그 수가 생성자가 있다면 (n == sum) flag를 false로 바꾸고 for문을 나가서 flag를 리턴 시켜준다.
line 19 : false로 보내면 생성자가 있는 수이므로 메인 함수에서 출력하지 않는다. true면 for문으로 n이하의 값을 다 검사했는데 생성자가 나오지 않는 것이므로 true를 리턴 시켜 메인 함수에서 출력하게 한다.
반응형
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 11654 자바 java 아스키 코드 (2) | 2020.09.13 |
---|---|
백준 1065번 java 자바 한수 charAt()이용 (0) | 2020.09.09 |
백준 15596번 자바 java 정수 N개의 합 (0) | 2020.09.09 |
백준 4344번 java 자바 평균은 넘겠지 (2) | 2020.09.08 |
백준 8958 Java 자바 OX퀴즈 String (0) | 2020.09.07 |
댓글