백준 9506번: 약수들의 합 링크
https://www.acmicpc.net/problem/9506
문제를 풀기 전 생각한 것
테스트 케이스마다 한 줄 간격
2 < n < 100,000
-1로 종료
약수를 구할 방법과 저장할 배열 만들기
출력을 어떻게 할지
풀면서 어려웠던 점
배열과 변수를 while 문 밖에서 초기화해서 다음 케이스 실행 때 결과가 다르게 나왔다
코드
#include <stdio.h>
int main(void)
{
int n = 0;
while(1) {
scanf ("%d", &n);
if (n < 3 || n > 99999 || n == -1) {
break;
}
int ans[50] = {0};
int temp = 0, count = 0;
for (int i = 1; i < n; i++){
if (n % i == 0){
ans[count++] = i;
temp += i;
}
}
if (temp == n) {
printf("%d = ", n);
for (int j = 0; j < count; j++) {
printf("%d", ans[j]);
if (j != count - 1) {
printf(" + ");
}
}
printf("\n");
}
else {
printf("%d is NOT perfect.\n", n);
}
}
return 0;
}
풀면서 배운 점
연속으로 다른 결과를 출력해야 할 땐 초기화를 반복문 안에서 하자
반응형