입력 배열 다 필요 없이 맨 위에 한 줄만 있으면 암호를 해독하는데 충분하다.
map 배열에 암호가 저장되며 입력되는 배열에 1이 입력 된 후부터 최대 56개를 입력받는다.
map 배열에 6부터 대입한 이유는 1앞에 0이 올수도 있기 때문!!!
이렇게 찾은 map 배열의 뒤에서부터 비교해가면서 암호를 찾았다.
암호의 맨 뒤는 무조건 1이기 때문에!!!!! 시작 위치가 명확하다.
끝!
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #include <stdio.h> #include <string.h> int map[120], password[10]; int code[10][7] = { {0,0,0,1,1,0,1},//0 {0,0,1,1,0,0,1},//1 {0,0,1,0,0,1,1},//2 {0,1,1,1,1,0,1},//3 {0,1,0,0,0,1,1},//4 {0,1,1,0,0,0,1},//5 {0,1,0,1,1,1,1},//6 {0,1,1,1,0,1,1},//7 {0,1,1,0,1,1,1},//8 {0,0,0,1,0,1,1}//9 }; int len, start; int back = 0; int check() { int num = 7, point = 0, total = 0; point = back; for (int a = 7; a >= 0; a--) { for (int i = 0; i < 10; i++) { int count = 0; for (int j = 0; j < 7; j++) { if (code[i][6 - j] == map[point - j]) { count++; } if (count == 7) { point -= 7; password[num--] = i; } } } } total = 3 * (password[0] + password[2] + password[4] + password[6]) + password[1] + password[3] + password[5] + password[7]; if (total % 10 == 0) { total = 0; for (int i = 0; i < 8; i++) { total += password[i]; } return total; } else { return 0; } } int main() { int Test; scanf("%d", &Test); for (int i = 1; i <= Test; i++) { int a, b, k, Flag = 0; back = 0; memset(map, 0, sizeof(map)); memset(password, 0, sizeof(password)); len = 0; start = 0; scanf("%d %d", &a, &b); for (int y = 0; y < a*b; y++) { scanf("%1d", &k); if (Flag == 1 && len < 56) { map[6 + len++] = k; } else if (k == 1 && Flag == 0) { map[5] = k; Flag = 1; } } for (int y = 119; y >= 0; y--) { if (map[y] == 1) { back = y; break; } } printf("#%d %d\n", i, check()); } return 0; } | cs |
'SW 업무 관련 > SW Expert Academy' 카테고리의 다른 글
1238. [S/W 문제해결 기본] 10일차 - Contact (0) | 2018.07.14 |
---|---|
1219. [S/W 문제해결 기본] 4일차 - 길찾기 (0) | 2018.07.11 |
1961. 숫자 배열 회전 (0) | 2018.07.03 |
1209. [S/W 문제해결 기본] 2일차 - Sum (0) | 2018.07.01 |
1954. 달팽이 숫자 (0) | 2018.07.01 |