728x90
실습 문제중에 나온 문제입니다. 다른 문제에 비해 풀이하는데 시간이 걸렸으므로 기록해두기 위해 포스트를 씁니다.
핵심사항은 비교하는 배열과 비교당하는 배열을 구분지어서 각각의 인덱스를 독립적으로 생각해야한다는 점이었습니다.
자세한 내용은 코드에 주석을 달아두었습니다.
#완성된 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#pragma warning(disable:4996)
#include <stdio.h> void where_is_y(int x[][3], int xcol, int xrow, int y[][2], int ycol, int yrow); int main() { int x[3][3] = { 0 }; int y[2][2] = { 0 }; int i, j; int p = 0, q = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { scanf("%d", &x[i][j]); } } for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { scanf("%d", &y[i][j]); } } for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf(" %d", x[i][j]); } printf("\n"); } for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { printf(" %d", y[i][j]); } printf("\n"); } where_is_y(x, 3, 3, y, 2, 2); return 0; } void where_is_y(int x[][3], int xcol, int xrow, int y[][2], int ycol, int yrow) { int a = 0, b = 0, count = 0;// a,b는 y배열의 start idx int discoverd_i = 0, discoverd_j = 0; int pass = 0; int p = 0, q = 0; //X배열 탐색 for (int i = 0; i < xrow; i++) { for (int j = 0; j < xcol; j++) { a = 0, b = 0, count = 0; if (x[i][j] == y[a][b]) { // y배열의 시작점과 같은 원소를 찾았다면? a=0,1 b=0,1 4가지경우일때 같은지 확인 // y가 0행일때 먼저 비교>> 1행일때 비교 /* y배열이 1 1 ==> 0행 1 1 ==> 1행 */ discoverd_i = i; discoverd_j = j; p = i, q = j; for (a = 0; a < 2; a++, p++) { //0행부터 1행까지 비교 b = 0, q = discoverd_j; if (x[p][q] == y[a][b]) {//0열이 같다면 x의 열 idx j와 y배열의 열 idx b를 1씩추가후에 q++; b++; if (x[p][q] == y[a][b]) {//1열 비교, 1열까지 같다면 0행은 다 같은거임 count++;// 한 행이 같으면 cnt 추가 } } } if (count == 2 && pass == 0) { printf("%d %d", discoverd_i, discoverd_j); //0행와 1행이 같다면 cnt가 2일것임 pass++; } } } } if (pass == 0) printf("none"); } |
cs |
728x90
'지난 학기들의 기록 > C 기초' 카테고리의 다른 글
[C실습] 동적할당예제 - 2차원 배열 활용 (0) | 2020.08.21 |
---|---|
[C실습] BOJ/10809 + 문자열과 포인터 예제 (0) | 2020.06.14 |
[C실습] 배열예제 -초를 입력받고 그 후의 시,분,초 구하기 (0) | 2020.06.02 |
[C실습] 함수 예제 - 시저암호화 및 복호화(Caesar cipher,카이사르 암호)+수정(파이썬코드 추가) (1) | 2020.06.01 |
[C실습] 함수예제 - 높은 자릿수, 낮은자릿수부터 변환하기 (0) | 2020.05.31 |
댓글