반응형

각 톱니바퀴의 가장 왼쪽 톱니의 위치를 기억하고, 이를 회전해주며 업데이트해줬습니다.

#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등 이미지
숏코딩1등이미지

오랜만에 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

+ Recent posts