[알고리즘] 백준 9506 약수들의 합2 - C

POBSIZ (POBSIZ)·2023년 5월 26일
0

알고리즘

목록 보기
10/11
post-custom-banner

문제 바로가기 >

설명 & 입출력

해설

코드

#include <stdio.h>

int main() {
	// n = 입력 받는 수, s = 입력 받는 수가 완전수 인지 판단하는 변수
    int n, s=0;
    
    // 반복
    while(1) {
    	// 값을 입력 받는다.
        scanf("%d", &n);
        
        // 입력 받은 값이 -1이면 탈출한다.
        if(n == -1) break;
        
        // 확인용 변수의 값을 0으로 초기화
        s=0;
        
        // 확인용 변수에 약수들을 더해준다.
        for(int i=1; i<n; i++) if((n%i) == 0) s+=i;
        
        // 완전수일 경우 (확인용 변수의 값이 입력받은 수와 같을 경우)
        if(s == n) {
        	// 확인용 변수 출력
            printf("%d = ", s);
            
            // 반복
            for(int i=1; i<n; i++) {
            	// 약수일 경우 출력
                // 현재 반복이 마지막일 경우 정수만 출력 아닐경우 뒤에 "+" 문자를 붙여 출력한다.
                if((n%i) == 0) printf(i != n-i ? "%d + " : "%d", i);
            }
            
            // 개열 문자열 출력
            printf("\n");
        }else{
        	// 완전수가 아닐경우 아래 문자열 출력.
            printf("%d is NOT perfect.\n", n);
        }
    }

    return 0;
}

마무리

이번 문제는 약수들을 어떻게 보여줄지가 중요한 문제였던 것 같다.

post-custom-banner

0개의 댓글