ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋‚˜๋จธ์ง€์—ฐ์‚ฐ ๋ฌธ์ œ:

 

์ฝ”๋“œ:

 

#include<stdio.h>

int modulo(int a, int b) {
	int t;
	t = a % b;
	return t;
}

int main() {
	int a, b;
	scanf("%d %d", &a, &b);

	printf("%d", modulo(a, b));

}

 

๋น„ํŠธํ–‰๋ ฌ ๋ฌธ์ œ:

์ž…์ถœ๋ ฅ ํ˜•์‹:

1) ์ž…๋ ฅ: main ํ•จ์ˆ˜๋Š” ๋‹ค์Œ ๊ฐ’๋“ค์„ ํ‘œ์ค€์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

- ์ฒซ ๋ฒˆ์งธ ๋ผ์ธ: ์ •์ˆ˜ n (n × n ํ–‰๋ ฌ์—์„œ n ๊ฐ’, ๋‹จ n 100์œผ๋กœ ์ „์ œํ•จ)

- ๋‘ ๋ฒˆ์งธ ์ดํ›„ ๋ผ์ธ: n × n ๋น„ํŠธ ํ–‰๋ ฌ ์›์†Œ๋“ค(ํ–‰์šฐ์„  ์ˆœ์„œ)

2) ์ถœ๋ ฅ: main ํ•จ์ˆ˜๋Š” 1์ด ๊ฐ€์žฅ ๋งŽ์€ ํ–‰ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ์ฒซ ๋ฒˆ์งธ ํ–‰ ๋ฒˆํ˜ธ๋Š” 0์ด๋‹ค.

 

์ž…๋ ฅ ์˜ˆ์‹œ 1

์ถœ๋ ฅ ์˜ˆ์‹œ 2

8 โ†ฆ n = 8 (8 × 8 ํ–‰๋ ฌ)

1 1 1 1 0 0 0 0 โ†ฆ ๊ฐ ๋น„ํŠธ๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„

1 1 1 1 1 0 0 0

1 0 0 0 0 0 0 0

1 1 1 1 1 1 0 0

1 1 1 1 0 0 0 0

0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 0

1 1 1 1 1 0 0 0

6 โ†ฆ 1์ด ๊ฐ€์žฅ ๋งŽ์€ ํ–‰ ๋ฒˆํ˜ธ: 6

 

์˜์‚ฌ์ฝ”๋“œ:

์ฝ”๋“œ:

#include<stdio.h>

int mostOnes(int A[100][100], int n) {
	int row = 0;
	int i = 0, j = 0;
	while(1) {
		while(A[i][j]==1) {
			j += 1;
			if (j == n)
				return i;
			row = i;
		}
		
		while (A[i][j] == 0) {
			i += 1;
			if (i == n)
				return row;
		}
	}
	return row;
}

int main() {
	int N;
	scanf("%d", &N);
	int A[100][100];

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			scanf("%d", &A[i][j]);
		}
	}

	printf("%d", mostOnes(A, N));

	return 0;
}

**์˜์‚ฌ์ฝ”๋“œ ์•Œ์•„์•ผํ•จ

 

 

๋ˆ„์  ํ‰๊ท  ๋ฌธ์ œ:

์ž…์ถœ๋ ฅ ํ˜•์‹:

1) main ํ•จ์ˆ˜๋Š” ์•„๋ž˜ ํ˜•์‹์˜ ํ‘œ์ค€์ž…๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด X๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ ํ›„ ๊ฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

์ž…๋ ฅ : main ํ•จ์ˆ˜๋Š” ๋‹ค์Œ ๊ฐ’๋“ค์„ ํ‘œ์ค€์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ผ์ธ: ์ •์ˆ˜ n (๋ฐฐ์—ด X์˜ ํฌ๊ธฐ)

๋‘ ๋ฒˆ์งธ ์ดํ›„ ๋ผ์ธ: X[0] X[1] X[2] ... (๋ฐฐ์—ด X, ํ•œ ๋ผ์ธ ์ƒ์˜ ์–‘์˜ ์ •์ˆ˜ ์ˆ˜์—ด)

โ€ป ํžŒํŠธ: n์˜ ํฌ๊ธฐ์—๋Š” ์ œํ•œ์ด ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๋™์  ํ• ๋‹น์„ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•จ)

2) main ํ•จ์ˆ˜๋Š” ์•„๋ž˜ ํ˜•์‹์˜ ํ‘œ์ค€์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜๋œ ๋ฐฐ์—ด A๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ถœ๋ ฅ : A[0] A[1] A[2] ...

(๋ฐฐ์—ด X์™€ ๊ฐ™์€ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด A์˜ ์›์†Œ๋“ค์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ•œ ๋ผ์ธ ์ƒ์˜ ์–‘์˜ ์ •์ˆ˜ ์ˆ˜์—ด๋กœ์„œ ์ฒซ ๋ฒˆ์งธ ๋ผ์ธ์€ prefixAverages1์˜ ์ถœ๋ ฅ์„, ๋‘ ๋ฒˆ์งธ ๋ผ์ธ์€ prefixAverages2์˜ ์ถœ๋ ฅ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค)

3) ํ‰๊ท  ๊ณ„์‚ฐ ์‹œ ์†Œ์ˆ˜์  ์ดํ•˜๋ฅผ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ •์ˆ˜๋กœ ๊ตฌํ•œ๋‹ค. ์ •ํ™•ํ•œ ๋ฐ˜์˜ฌ๋ฆผ์„ ์œ„ํ•ด, %.f๋ฅผ ์“ฐ์ง€ ๋ง๊ณ  int ์„ฑ์งˆ์„ ์ด์šฉํ•ด์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜๋ผ.

์ž…๋ ฅ ์˜ˆ์‹œ 1

์ถœ๋ ฅ ์˜ˆ์‹œ 1

3 โ†ฆ ๋ฐฐ์—ด X ํฌ๊ธฐ

5 1 9 โ†ฆ ๋ฐฐ์—ด X

5 3 5 โ†ฆ prefixAverages1์˜ ์ถœ๋ ฅ

5 3 5 โ†ฆ prefixAverages2์˜ ์ถœ๋ ฅ

์ž…๋ ฅ ์˜ˆ์‹œ 2

์ถœ๋ ฅ ์˜ˆ์‹œ 2

6 โ†ฆ ๋ฐฐ์—ด X ํฌ๊ธฐ

1 3 2 10 6 8 โ†ฆ ๋ฐฐ์—ด X

1 2 2 4 4 5 โ†ฆ prefixAverages1์˜ ์ถœ๋ ฅ

1 2 2 4 4 5 โ†ฆ prefixAverages2์˜ ์ถœ๋ ฅ

 

์ฝ”๋“œ:

#include<stdio.h>
#include<stdlib.h>

int prefixAverages1(int *x, int n);
int prefixAverages2(int *x, int n);

int main() {
	int n;
	scanf("%d", &n);
	int* x = NULL;

	x = (int*)malloc(n * sizeof(int));
	if (x == NULL) {
		printf("Not enough memory!");
		return -1;
	}

	for (int i = 0; i < n; i++) {
		scanf("%d", &x[i]);
	}

	int* arr1 = prefixAverages1(x, n);
	for (int i = 0; i < n; i++) {
		printf("%d ", arr1[i]);
	}
	printf("\n");
	free(arr1);

	int* arr2 = prefixAverages2(x, n);
	for (int i = 0; i < n; i++) {
		printf("%d ", arr2[i]);
	}
	free(arr2);
	free(x);
}

int prefixAverages1(int *x, int n) {// O(n^2)ํ•จ์ˆ˜
	int sum;
	int* A = (int*)malloc(n * sizeof(int));

	for (int i = 0; i < n; i++) {
		sum = 0;
		for (int j = 0; j <= i; j++) {
			sum = sum + x[j];
		}
		A[i] = (int)((sum / (double)(i + 1)) + 0.5);// ๋ฐ˜์˜ฌ๋ฆผ
	}
	return A;
}

int prefixAverages2(int *x, int n) {// O(n)ํ•จ์ˆ˜
	int sum = 0;
	int* A = (int*)malloc(n * sizeof(int));

	for (int i = 0; i < n; i++)
	{
		sum += x[i];
		A[i] = (int)((sum / (double)(i + 1)) + 0.5);
	}

	return A;
}

*prefixAverages1, prefixAverages2 ํ•จ์ˆ˜ ๋‚ด์—์„œ๋„ ๋™์ ํ• ๋‹น ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด ์„ ์–ธํ•˜๊ธฐ

*๋ฐ˜์˜ฌ๋ฆผ ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„ ์ฃผ์˜

๋ฐ˜์‘ํ˜•