donchanee

배열 문제 #6. 본문

프로그래밍/C언어

배열 문제 #6.

donchanee 2018. 5. 20. 14:15
728x90


위와같은 문제이다.


정수를 입력받아 거꾸로 출력한 뒤, 3개씩 묶어 그 세개의 숫자 중 가장 큰수, 가장 작은수를 출력하는 문제이다.


#include <stdio.h>


int main(void){

    

    int N, i, j, a[20];

    int max_a[20], min_a[20], max, min, cnt;

    

    scanf("%d", &N);

    for(i=0;i<N;i++)

        scanf("%d", &a[i]);

    

    for(i=N-1;i>=0;i--)

        printf(" %d", a[i]);

    printf("\n");

    

    cnt=0;

    for(i=0;i<N;i+=3) {

        min = max = a[i];

        

        for(j=i+1; j<i+3 && j<N; j++) {

            if (a[j]>max)

                max = a[j];

            if (a[j]<min)

                min = a[j];

        }

        max_a[cnt] = max;

        min_a[cnt] = min;

        cnt++;

    }

    

    for(i=0; i<cnt; i++) {

        printf(" %d", max_a[i]);

    }

    printf("\n");

    for(i=0; i<cnt; i++) {

        printf(" %d", min_a[i]);

    }

    

    return 0;

}


처음에 cnt 라는 변수를 설정한다. 그 뒤 3개씩 묶기위한 for문을 작성하고, 초기값을 설정한다.


다음, 3개씩 묶은곳에서 최대값, 최소값을 정하여서 max와 min변수에 넣는다.


그 후 cnt값을 하나씩 증가시키면서 배열 max_a, min_a에 대입한다.


cnt값을 설정하는게 포인트.


'프로그래밍 > C언어' 카테고리의 다른 글

포인터에 대한 4문제  (0) 2018.10.02
배열 문제 #7.  (0) 2018.05.22
배열 문제 #5.  (0) 2018.05.19
배열 문제 #4.  (0) 2018.05.18
배열 문제 #3  (0) 2018.05.18