C언어 문제 질문입니다..ㅠㅠ

조회수 639회
1=1
1+3=4
1+3+6=10
1+3+6+10=20
1+3+6+10+15=35
.
.
.

이런식으로 15개 항의 합을 중간결과와 함께 출력하는 프로그램을 작성하시오. 라는 문제입니다.

공차가 2,3,4,5로 증가하는 등차수열의 합

이렇게 문제가 나와있고

#include <stdio.h>

int main()
{
    int sum = 0;
    int i, j, k;

    for (i = 1; i <= 15; i++)
    {
        k = 3;
        j = 1;

        if (i == 1) //첫번째 반복일 때
        {
            printf("%d", j);
            sum += j;
        }
        else //두번째 반복부터
        {
            printf("%d+", j); //앞에 1+가 붙는다

            for (j = 3; j <= i; j = j++) // 그 다음부터
            {
                printf("%d+", k);
                k += j;
                sum += k;
            }
        }
        printf("=%d\n", sum);
    }

    return 0;
}

이건 제가 짠 코드인데요..C언어 공부중인데 너무 어렵네용 고수님들 도와주세욤ㅠㅠ

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

1 답변

  • #include <stdio.h>
    
    int main()
    {
        int i = 0, j = 1; // 반복문 구현을 위한 변수
        int sum = 0, temp = 0; // 누적합계 및 임시합계 변수
        int plus_num = 2; // 증가되는 수 (2,3,4....)
    
        for(i=1;i<=15;i++)
        {
            printf("%d",j); // 시작점 1 출력
            temp += j; // 임시 합계에 시작점 누적
            sum += temp; // 누적 합계에 시작점 누적
    
            for(j=1;j<=i;j++)
            {
                if(j>=i) break; 
                else 
                    {
                        temp += plus_num; // 임시합계에 증가수를 더함으로 다음 더해질 수 저장
                        printf(" + %d",temp); // 다음 수 출력
                        plus_num++; // 증가되는 수 +1
                        sum += temp; // 누적합계에 다음수 누적
                    }
            }
            printf(" = %d \n",sum);  // 누적합계 출력
            j = 1;
            sum = 0;
            temp = 0;
            plus_num = 2; // 다음 반복을 위해 각종 변수 초기화
        }
    
        return 0;
    }
    

    동작원리 파악하시고 , 저보다 더 효율적인 코드( 변수나 연산을 줄임)를 직접 만들어보세요.

    그리고 개인적인 생각이지만, 안풀리는 알고리즘이 있으면 그림판에 프로그램 구조를 그리면서 자신이 어느부분에서 막히는지 파악하며 3시간동안은 고민해보세요~

    남의 코드를 보고 구현하기보다 자신이 몇날몇일을 고민해서라도 직접 구현한건 이해하는 정도가 다릅니다.

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)