언어/c, c++

백준(BAEKJOOB) 3052번 나머지 문제 c언어

깡 딱 2023. 1. 6. 11:04
728x90

문제

두 자연수 A와 B가 있을 때, A% B는 A를 B로 나눈 나머지이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

 

 

 



먼저 문제풀이 부터 하면

printf("%d", 1 % 42);

 

문제 해결을 위해 1을 42로 나눈 나머지가 무엇인지 먼저 확인해보았고

 

 

조건 1>> 10개를 입력받을 수 있다고 이야기하였기 때문에 

 

int a;
    
    for (int i = 0; i < 10; i++) {
    scanf_s("%d", &a);
    }

반복문을 만들어 줬습니다.

조건 2>>  42로 나눈 나머지 이기 때문에 

#include<stdio.h>

//printf("%d", 1 % 42);
int main() {

	int array[1000] = { 0, };
	int a;

	for (int i = 0; i < 10; i++) {
		scanf_s("%d", &a);


		array[i] = a % 42;
	}


}//main

조건 3>> 서로 다른 값이 몇 개 있는지 출력

두 수를 비교하기 위해 이중 for문을 이용하고 array i의 값과 j의 값이 같으면 count 해줍니다

 

하지만 count가 올라가지 않으면 0이 되기 때문에 sum을++해주게 됩니다 

	for (int i = 0; i < 10; i++) {
		int count = 0;
		for (int j = i + 1; j < 10; j++) {
			if (array[i] == array[j]) {
				count++;
			}
		}
		if (count == 0) {
			sum++;
		}
	}

int count=0을 한 이유는 다시 초기화해주기 위해서이다.

 

총 코드

#include<stdio.h>

//printf("%d", 1 % 42);
int main() {

	int array[1000] = { 0, };
	int a;

	int sum = 0;

	for (int i = 0; i < 10; i++) {
		scanf_s("%d", &a);
		array[i] = a % 42;
		}
	
	//검사를 위해
	for (int i = 0; i < 10; i++) {
		int count = 0;
		for (int j = i + 1; j < 10; j++) {
			if (array[i] == array[j]) {
				count++;
			}
		}
		if (count == 0) {
			sum++;
		}
	}
	printf("%d", sum);



}//main

 

728x90