상세 컨텐츠

본문 제목

[2025 코딩캠프] #2 1부터 10까지 중간합과 누적합 출력하기 (lv.2)

C/문제 풀이

by uzichoi 2025. 1. 23. 15:59

본문

Q. 1+(1+2)+(1+2+3)+...+(1+2+3+...+10)의 합을 다음과 같은 중간결과로 출력하는 프로그램을 작성하시오.

A. 

실행 결과

#include <stdio.h>
void printPartial(int j);
int main(void) {
    int i, j;
    int s = 0, p;

    for (i = 1; i <= 10; i++) {
        p = 0;

        // 출력 형식 처리(i==1은 special case)
        printf("1 ");
        if(i==1)
            p = 1; // 부분합 초기화
        
        for (j = 2; j <= i; j++) {
            //1은 이미 출력됐으니까 (1+'2') 부터 출력되도록 구간 설정하고,
            // 이후 함수에서 반복문 구간 설정할 때 k=1; k<=j; k++로 두고 k==1일 때의 조건을 따로 설정한다. 이또한 special case
            printPartial(j);
            
        }
        for (int k = 1; k <= j; k++) {
            p += k;
        }

        s += p; // 누적합 계산
        
        printf(" = %d\n", s); // 결과 출력
    }

    // 마지막 줄바꿈 추가
    return 0;
}

void printPartial(int j) {
    for (int k = 1; k <= j; k++) {
        if (k == 1)          //first
            printf("+(%d+", k);
        else if (k == j)     //last(마감)
            printf("%d)", k);
        else if (k != j)
            printf("%d+", k);
        
    }
    //printf(" [Partial Sum: %d] ", *p); // 디버깅용 출력
}

관련글 더보기