https://www.acmicpc.net/problem/16116
구현이지만 논리력에 따라 // 관찰력에 따라 코드가 짧아질 수 있는 문제
다음을 관찰하면 코드가 짧아진다.
한 큐브가 [a b c] 였다면, 반드시 나머지 일곱 개 중에 윗 그림과 같은 세 개의 큐브가 존재해야 한다.
헌데 큐브는 요리 조리 돌려도 똑같기 때문에
한 큐브 마다 -> 세 가지 방향으로 -> 나머지 7가지 큐브 중에 -> 두면이 맞닿고 같은 큐브가 존재(중요) -> 그것도 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 | #include <stdio.h> char str[6]; char cb[8][4]; int main() { for (int i = 0; i < 8; ++i) { fgets(str, sizeof(str), stdin); cb[i][0] = str[0]; cb[i][1] = str[2]; cb[i][2] = str[4]; fgets(str, sizeof(str), stdin); } bool cannot = false; for (int i = 0; i < 8; ++i) { for (int j = 0; j < 3; ++j) { int left = cb[i][j]; int top = cb[i][(j + 1) % 3]; int cnt = 0; for (int k = 0; k < 8; ++k) { if (i != k) { for (int l = 0; l < 3; ++l) { if (cb[k][l] == left && cb[k][(l + 2) % 3] == top) { cnt++; } } } } if (cnt != 1) cannot = true; } } if (cannot) puts("NO"); else puts("YES"); } | cs |
'알고리즘 > 미분류' 카테고리의 다른 글
백준) 15668 방 번호 (0) | 2018.10.02 |
---|---|
백준) 15957 음악 추천 (퇴고전) (0) | 2018.09.11 |
codeforces educational 50 round div2 참여기록 (0) | 2018.09.09 |
SCC 문제들! 백준) 2150, 4013, 4196 (0) | 2018.07.22 |
백준) 2512 예산 (0) | 2018.07.19 |