C언어에서 반복문을 사용한 계산질문

조회수 612회
1 =1
1+(1+2) =4
1+(1+2)+(1+2+3) = 10
1+(1+2)+(1+2+3)+(1+2+3+4) =20
1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5) = 35

를 결과로 출력하는 코드를 visual studio로 출력하고 싶은데요.

#include <stdio.h>
int main()
{
    int sum = 0;

    for (int i = 1; i <= 5; i++)
    {
        if (i > 1)
        {
            printf("(");
            for (int j = 1; j <= 5; j++)
            {
                if (j <= i)

                if (j == 1)
                    printf("1");
                else
                    printf("+%d", j);
            }
            printf(")");
            printf("\n");
        }

    }
    return 0;
}

여기까지는 했는데 그 다음을 모르겠어요.

1 답변

  • #include <stdio.h>
    
    
    int main()
    {
    
        int i=0,j=0; //  j -> 1부터시작해 i까지 더하는 변수  i -> 총 5번 반복 연산을 위한 변수
    
        int sum = 0; // 합계
        int max = 0; // 괄호 내 숫자의 갯수
    
        for(i=1;i<=5;i++)
        {
            j=1;
    
            if(i==1) // 첫번째 반복일때
            {
                printf("%d",j);
                sum += j;
            }
    
            else // 두번째부터의 반복일때
            { 
                max = 2; // max 초기화 ( 두번째 괄호안에 2개이상의 숫자가 들어가므로 2 초기화 )
                printf("%d + ",j); // 1 + 
                sum += j; // 합계값 누적
    
                do
                {
                    j=1; // j 값 초기화
                    printf("( %d",j);
                    sum += j; 
    
                    do 
                    {
                        printf(" + %d",++j);
                        sum += j; 
                    }while(j!=max); // 괄호내 숫자의 수만큼 반복
    
                    if(max==i) printf(" )"); // 이어질 괄호가 없는경우 ")" 출력
                    else printf(" ) + "); // 이어질 괄호가 있는경우 ") +" 출력
    
                    max++; // 괄호내 숫자 갯수 추가
    
                }while((max-1)!=i);// 괄호 내 숫자 -1 값이 i일 경우 반복문탈출
                // i 값과 max값을 비교하기전 max값이 1증가하므로 -1을 해줘야 한다
            }
    
            printf(" = %d \n",sum); // 합계 출력
            sum = 0; // 합계 초기화
        }
    
        return 0;
    
    }
    

    코드가 조금 복잡하고 이중반복을 써서 혼잡스럽네요.

    제가 써놓은 주석보다 코드를 먼저 보고 어떻게 코드가 돌아가는지 파악하고 주석을 참고하시길 바랍니다.

    c를 처음 접하시는분이라면 조금 구현하는데 골치아프고 어려웠을만한 문제인것같습니다.

    제 코드를 확실히 이해하신후 직접 구현해보시는걸 추천드립니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)