https://www.acmicpc.net/problem/9506
-1 이 나오면 무한 루프를 빠져 나올 수 있게 설정한다.
모든 수의 약수는 1을 포함하니 sum = 1 로 먼저 초기화 해주고, for 문은 2부터 num 까지 반복한다.
만약, 약수를 찾았다면 sum 에 더해주고, StringBuilder 에 append 해준다.
(마지막에 출력할 때, 약수들을 다시 불러와야 한다. 완전수임을 찾은 다음에 다시 약수들을 각각 구하는 것보다는 약수를 찾을 때 마다 StringBuilder 에 append 해주는 것이 시간적으로 깔끔한거 같아서 그렇게 해주었다.)
모든 약수를 다 구한 뒤, sum 이 num 과 같다면(완전수라면) StringBuilder 를 출력해주고,
sum 이 num 과 다르다면(완전수가 아니라면) 일반 출력문(System.out. ...) 을 통해 출력해준다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(br.readLine());
if(num == -1)
break;
sb.append(num).append(" = 1 ");
int sum = 1;
for(int i=2; i<num; i++)
{
if(num % i == 0)
{
sum += i;
sb.append("+ ").append(i).append(" ");
}
}
if(sum == num)
System.out.println(sb.toString());
else
System.out.printf("%d is NOT perfect.\n", num);
}
}
}
- 느낀 점
마지막 출력 양식을 맞추느라 생각을 좀 했는데, 문제의 난이도는 쉽다.
'[JAVA] > 자바[JAVA] 백준' 카테고리의 다른 글
BOJ(백준 온라인 저지) 9063번 with 자바[JAVA] (0) | 2024.03.18 |
---|---|
BOJ(백준 온라인 저지) 15804번 with 자바[JAVA] (0) | 2024.03.18 |
BOJ(백준 온라인 저지) 2501번 with 자바[JAVA] (0) | 2024.03.18 |
BOJ(백준 온라인 저지) 5086번 with 자바[JAVA] (0) | 2024.03.18 |
BOJ(백준 온라인 저지) 1406번 with 자바[JAVA] (0) | 2022.01.18 |