C언어 기초: 배열 각 원소의 마지막 값 확인

김영채 (Kevin)·2020년 4월 19일
0

C언어

목록 보기
18/23
post-thumbnail

이번 문제는 좀 까다로웠다. 바로 출력 예제부터 보자:

우선 첫 번째 입력 (10)은 배열의 크기다. 배열의 크기를 입력 받은 후, 배열에 값을 초기화시켜줘야 한다. 입력 받은 배열의 크기보다 작거나 크면 에러가 난다. 그 다음에는 입력받은 배열의 원소들 중, 0~9로 끝나는 숫자가 있는 원소가 몇 개씩 있는지 출력해야 한다.
예를 들어, 위 예제에서 4로 끝나는 원소는 4와 2004가 있고, 9로 끝나는 원소는 9, 1009, 그리고 99가 있다.

각 배열 원소의 끝자리가 0~9인지 확인하면 되니까 우선 당연히 for문은 들어갈 것이며, 나머지 연산도 꼭 필요하겠다는 생각이 들었다. 맨 끝자리를 확인하는 것이니 %10을 적절히 사용하면 각 원소의 끝자리를 추출할 수 있을 것이다.

손코딩부터 보자:

제대로된 코드는 아니지만 꽤 고심을 했다. 실제로 나머지(%) 연산을 사용하면 끝자리가 제대로 출력이 되는지도 손으로 확인을 먼저 해보았다. 다행히 잘 돼서 나머지 연산을 for문이 한 번 돌때마다 사용하면 되겠구나라는 생각을 했다.

최종 코드는 아래와 같다:

#include <stdio.h>

int checkLastDigit(int arr[], int size,int num);


int main(){
   
   int size; int num=0;
   
   scanf("%d", &size);
   int arr[size];
   for(int i=0;i<size;i++){
       scanf("%d", &arr[i]);
   }
   
   for(int i=0;i<10;i++){
       printf("%d %d", i, checkLastDigit(arr, size, i));
       printf("\n");
   }
          
   return 0;
}

int checkLastDigit(int arr[], int size, int num){
   
   int count=0;
   
   for(int j=0; j<size;j++){
       if(arr[j]%10==num){
           count++;
       }
   }
   return count;
       
}

profile
맛있는 iOS 프로그래밍

0개의 댓글