#24. [백준_C언어] 3052 : 나머지

 

 입력 코드 

#include <stdio.h>

main() {
	int i = 0, j, k;
	int rem[10];
	int input, result = 0;

	for(i=0;i<10;i++){
		scanf("%d", &input);
		rem[i] = (input % 42);
	}
	
	for (j = 0; j < 10; j++) {
		int count = 0;
		for (k = j+1; k < 10; k++) {
			if (rem[j] == rem[k])
				count++;
		}
		if (count == 0)
			result++;
	}
	printf("%d", result);
}

 

 코드 설명 

배열과 반복문, 조건문을 이용하는 문제

#include <stdio.h>

main() {
	int i=0, j=0, k;
	int arr[10], rem[10];
	int count=0;

	while(i<10){
		scanf("%d", &arr[i]);
		rem[j++] = arr[i++]%42;
	}
	
	for (j = 0; j < 10; j++) {
		for (k = 0; k < 10; k++) {
			if (rem[j] != rem[k])
				count++;
		}
	}
	printf("%d", count);
}

처음에는 42로 나눈 나머지를 배열에 넣고 다른지 일일이 다 비교했는데 이렇게 하면 중복으로 count되는 게 많아지는 것 같다.

#include <stdio.h>

main() {
	int i = 0, j, k;
	int rem[10];
	int input, result = 0;

	for(i=0;i<10;i++){
		scanf("%d", &input);
		rem[i] = (input % 42);
	}
	
	for (j = 0; j < 10; j++) {
		int count = 0;
		for (k = j+1; k < 10; k++) {
			if (rem[j] == rem[k])
				count++;
		}
		if (count == 0)
			result++;
	}
	printf("%d", result);
}

찾아보니까 반대로 count =0으로 초기화해놓고 나머지가 같을 때에만 count를 증가시킨다. 그러면 count = 0일 때는 나머지가 같지 않다는 것이므로 그때 새로운 값(result값)을 증가시킨다. 

 

마지막에 반복문 초기값 설정하는 거에서 헷갈렸다. j=0인 값이랑 j=1, j=2,,, 를 비교해야 하니까

 

2021/01/08 - [C] - #19. [백준_C언어] 2798 : 블랙잭

 

#19. [백준_C언어] 2798 : 블랙잭

 입력 코드 #include main() { int N, M; scanf("%d %d", &N, &M); int num[100]; int sum, max = 0; int i, j, k; for (i = 0; i < N; i++) { scanf("%d", &num[i]); } for (i = 0; i < N; i++) { for (j = i +..

daily-life-in-20s.tistory.com

이 문제랑 비슷한 것 같기도 하다.

 

 

참고한 사이트

develop247.tistory.com/14

 

[C언어] 백준 3052번 : 나머지

백준 3052번 : 나머지 - 사용언어 : C언어 www.acmicpc.net/problem/3052 1. 문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다..

develop247.tistory.com

 

 

 문제 출처 

www.acmicpc.net/problem/3052

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net