반응형
풀이는 아래와 동일합니다. 바퀴의 개수만 달라졌습니다.
https://kukekyakya.tistory.com/entry/%EB%B0%B1%EC%A4%80-14891-%ED%86%B1%EB%8B%88%EB%B0%94%ED%80%B4
각 톱니바퀴의 가장 왼쪽 톱니의 위치를 기억하고, 이를 회전해주며 업데이트해줬습니다.
#include <cstdio>
int t, k, n, m, s = 0;
char NS[1000][9], left[1000];
void rotate(int a, int b, int c) {
if (a > 0 && a - 1 != c && NS[a - 1][(left[a - 1] + 4) % 8] != NS[a][left[a]]) rotate(a - 1, -1 * b, a);
if (a < t - 1 && a + 1 != c && NS[a + 1][left[a + 1]] != NS[a][(left[a] + 4) % 8]) rotate(a + 1, -1 * b, a);
left[a] = b == 1 ? (left[a] + 7) % 8 : (left[a] + 1) % 8;
}
int main() {
scanf("%d", &t);
for (int i = 0; i < t && scanf("%s", NS[i]); left[i] = 6, i++);
scanf("%d", &k);
while (k-- && scanf("%d %d", &n, &m)) rotate(n - 1, m, n - 1);
for (int i = 0; i < t; i++) s += NS[i][(left[i] + 2) % 8] - '0';
printf("%d", s);
}
오랜만에 1등을 할 수 있어서 만족스럽습니다. 숏코딩도 C++ 1등에 들었습니다!
반응형
'Algorithm' 카테고리의 다른 글
백준 15685 : 드래곤 커브 (0) | 2021.11.12 |
---|---|
백준 3568 : iSharp (0) | 2021.11.12 |
백준 11058 : 크리보드 (0) | 2021.11.12 |
백준 9202 : Boggle (0) | 2021.11.12 |
백준 2294 : 동전 2 (0) | 2021.11.12 |