1. 정직하게 자성체를 한 칸씩 옮겨가면서 더 이상 옮길게 없으면 Count 시작!
속도가...너무 느려서 다른 사람들 코드를 보니..이해가 안 간다ㅜ,ㅠ
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 | #include <stdio.h> #include <string.h> int a, b; int map[101][101]; int main() { for (int i = 1; i <= 10; i++) { int Size = 0; scanf("%d",&Size); for (int a = 0; a < 100; a++) { for (int b = 0; b < 100; b++) { scanf("%d", &map[a][b]); } } while (1) { int count = 0; for (int a = 0; a < 100; a++) { for (int b = 0; b < 100; b++) { int temp = 0; if (b + 1 >= 100 || b - 1 < 0) continue; if (map[b][a] == 1 && map[b+1][a] == 0) { temp = map[b][a]; map[b][a] = map[b + 1][a]; map[b + 1][a] = temp; count++; } else if (map[b][a] == 2 && map[b-1][a] == 0) { temp = map[b][a]; map[b][a] = map[b - 1][a]; map[b - 1][a] = temp; count++; } } } if (count == 0) break; } for (int a = 0; a < 100; a++) { if (map[0][a] == 2) map[0][a] = 0; else if (map[99][a] == 1) map[99][a] = 0; } int count = 0; for (int a = 0; a < 100; a++) { for (int b = 0; b < 100; b++) { if (map[b][a] == 1) { for (int c = 0; c < 100 - b; c++) { if (map[b + c][a] == 1) map[b + c][a] = 0; else if (map[b + c][a] == 2) { map[b + c][a] = 0; count++; break; } } } } } printf("#%d %d\n", i, count); } return 0; } | cs |
'SW 업무 관련 > SW Expert Academy' 카테고리의 다른 글
[S/W 문제해결 기본] 5일차 - GNS (0) | 2018.08.05 |
---|---|
1289. 원재의 메모리 복구하기 (0) | 2018.08.02 |
1216. [S/W 문제해결 기본] 3일차 - 회문2 (0) | 2018.07.28 |
1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (0) | 2018.07.28 |
1215. [S/W 문제해결 기본] 3일차 - 회문1 (2) | 2018.07.24 |