문제링크 :https://www.acmicpc.net/problem/14891
문제설명
1. 톱니 바퀴의 상태와 회전하는 톱니바퀴가 주어진다.
2. 모든 회전이 끝난후 각 톱니바퀴 12시방향의 상태에 따라 점수를 구한다.
알고리즘
1. 톱니바퀴를 돌렸을때 오른쪽 톱니 바퀴를 확인하는 함수와 왼쪽 톱니바퀴 를 확인하는 함수를 각각 정의한다.
2. 오른쪽 확인함수는 현재 자기 톱니바퀴3번째 배열과 오른쪽 톱니바퀴 7번째 배열을 비교 하고
왼쪽 확인 함수는 현재 자기 톱니카뷔 7번쨰 배열과 왼쪽 톱니바퀴 3번쨰 배열을 비교하면 된다.
코드
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 | #include<iostream> #include<vector> using namespace std; vector<int> v[4]; // 방향에따라 회전시키는 함수 void turn(int idx, int dir) { if (dir == 1) { int tmp = v[idx][7]; for (int i = 7; i > 0; i--) { v[idx][i] = v[idx][i - 1]; } v[idx][0] = tmp; } else { int tmp = v[idx][0]; for (int i = 0; i < 7; i++) { v[idx][i] = v[idx][i + 1]; } v[idx][7] = tmp; } } //오른쪽 톱니바퀴를 확인하는 함수 void right(int idx, int dir) { if (idx > 3) return; //맨 오른쪽 톱니바퀴 if (idx == 3) { if (v[idx][6] != v[idx - 1][2]) turn(idx, dir); } else { if (v[idx][6] != v[idx - 1][2]) { right(idx + 1, dir * (-1)); turn(idx, dir); } } return; } //왼쪽 톱니바퀴를 확인하는 함수 void left(int idx, int dir) { if (idx < 0) return; //맨 왼쪽 톱니바퀴 if (idx == 0) { if (v[idx][2] != v[idx + 1][6]) { turn(idx, dir); } } else { if (v[idx][2] != v[idx + 1][6]) { left(idx - 1, dir * (-1)); turn(idx, dir); } } } int main() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 8; j++) { int num; scanf("%1d", &num); v[i].push_back(num); } } int k; scanf("%d", &k); //톱니바퀴를 회전시킨당. for (int i = 0; i < k; i++) { int a, b; scanf("%d%d", &a, &b); right(a, (-1) * b); left(a - 2, (-1) * b); turn(a - 1, b); } int score = 0; if (v[0][0])score += 1; if (v[1][0])score += 2; if (v[2][0])score += 4; if (v[3][0])score += 8; printf("%d", score); } | cs |
'c++ > 백준' 카테고리의 다른 글
백준 14395번: 4연산 (0) | 2020.06.12 |
---|---|
백준 3184번 : 양 (0) | 2020.06.12 |
백준 15661번 : 링크와 스타트 (0) | 2020.06.12 |
백준 15685번: 드래곤 커브 (0) | 2020.06.12 |
백준 12886번: 돌 그룹 (0) | 2020.06.12 |