본문 바로가기
컴퓨터/C, C++

[C/C++] 백준 3052번 C언어

by stdFrog 2022. 5. 14.

백준 3052번 문제 - 1차원 배열

 

두 자연수 A와 B가 있을 때 A%B는 A를 B로 나눈 나머지이다.

예를 들어 7,14,27,38을 3으로 나눈 나머지는 1,2,0,2이다.

 

수 10개를 입력 받은 뒤, 이를 42로 나눈 나머지를 구한다.

그다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하라.

 

#include <stdio.h>

int main()
{
        int a=0, cnt=0, arNums[10], arMatch[42];

        for(int i=0; i<sizeof(arNums)/sizeof(arNums[0]); i++){
                scanf("%d", &a);
                arNums[i]=a%42;
        }

        for(int i=0; i<sizeof(arMatch)/sizeof(arMatch[0]); i++){
                arMatch[i]=i;
        }

        for(int i=0; i<sizeof(arMatch)/sizeof(arMatch[0]); i++){
                for(int j=0; j<sizeof(arNums)/sizeof(arNums[0]); j++){
                        if(arMatch[i]==arNums[j]){
                                cnt++;
                                break;
                        }
                }
        }
        printf("%d", cnt);
        return 0;
}

/*
	배열 하나만으로 비교할 수 있으나 예외 처리를 하지 않기 위해 배열을 하나 더 만들었다.
    
    0~41까지의 숫자를 담은 배열(arMatch)을 추가하고 숫자의 가짓수를 센다는 개념으로
    풀었다.
*/

생각보다 오래 걸렸다.

하루 한 문제씩은 꼭 풀어야겠다.

 
 

 

반응형

댓글