c언어 경우의 수 설명 부탁드립니다.

조회수 2147회
#include <stdio.h>


int money(int m)

{

     int a = 1, b = 1, c = 1;

     for (a = 1; 500 * a + 700 * b + 400 * c <= m; a++)
     {
        for (b = 1; 500 * a + 700 * b + 400 * c <= m; b++)
        {
           for (c = 1; 500 * a + 700 * b + 400 * c <= m; c++)
           {
              if (500 * a + 700 * b + 400 * c == m)
                 printf("크림빵 %d개, 새우깡 %d개, 콜라 %d개 \n", a, b, c);
           }
           c = 1;
         }
         b = 1;
         c = 1;
    }
}

int main(void)

{

    int m;
    printf("현재 당신이 소유하고 있는 금액 : ");
    scanf_s("%d", &m);
    money(m);
    printf("어떻게 구입하시겠습니까?\n");
    system("pause");
    return 0;
}

위에 소스코드 에서 main(int m)함수 중에서 c=1과 b=1,c=1을 왜 주어졌는지 잘 이해가 안갑니다. 참고로 위에 소스코드는 제가 짠게 아닙니다.

1 답변

  • c언어가 간결하긴 하지만 for 구문은 그렇게 깔끔하지 못합니다.

    for(초기값; 반복까지의 값; 초기값의 증가값) 의 문법구조에서

    a, b, c 의 값을 1로 준 것은 초기값을 설정한 겁니다.

    for 안에 for가 들어간다면 2차원 데이터 표현이라고 보면 됩니다.

    대표적으로 구구단을 생각해보면 됩니다.

    for(int x = 2; x < 10; x++){
        for(int y  = 1; y < 10; y++){
            printf("%d * %d = %d\n",  x, y, x * y);
        }
    }
    

    위의 코드는

    2 * 1 = 2

    2 * 2 = 4

    ...

    9 * 1 = 9

    9 * 2 = 18

    ...

    9 * 9 = 81

    가 됩니다.

    위의 코드를 컴파일하여 실행해보고 한줄 한줄 디버깅으로 x, y 값이 어떡해 변하는지 학습해보시기 바랍니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)