1. 한타임에 중복하여 돌리지 않도록 visited 배열을 이용해 체크한다.


2. 시계방향과 반시계방향으로 회전시키는 함수를 만든다.


3.

(1) 오른쪽 톱니를 돌릴 수 있으면 돌린다.

(2) 왼쪽 톱니를 돌릴 수 있으면 돌린다.

(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
#include <iostream>
using namespace std;
 
int t, k;
int map[4][8];
bool visited[4];
 
void turn(int num, int wise) {
    //시계방향
    if (wise == 1) {
        int n = map[num][7];
        for (int i = 7; i > 0; i--) {
            map[num][i] = map[num][i - 1];
        }
        map[num][0= n;
    }
    //반시계방향
    else {
        int n = map[num][0];
        for (int i = 0; i < 7; i++) {
            map[num][i] = map[num][i + 1];
        }
        map[num][7= n;
    }
}
 
void solve(int num, int wise) {
    visited[num] = true;
 
    //오른쪽
    if (num < 3 && map[num][2!= map[num + 1][6&& !visited[num + 1]) {
        solve(num + 1-1 * wise);
    }
    //왼쪽
    if (num > 0 && map[num][6!= map[num - 1][2&& !visited[num - 1]) {
        solve(num - 1-1 * wise);
    }
    turn(num, wise);
}
 
void initVisited() {
    visited[0= false;
    visited[1= false;
    visited[2= false;
    visited[3= false;
}
 
int getResult() {
    int ans = 0;
    for (int i = 0; i < 4; i++) {
        if (map[i][0== 1) ans += (1 << i);
    }
    return ans;
}
 
int main() {
    ios_base::sync_with_stdio(false);
 
    cin >> t;
    for (int tc = 1; tc <= t; tc++) {
        cin >> k;
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 8; j++) {
                cin >> map[i][j];
            }
        }
        int num, wise;
        while (k--) {
            cin >> num >> wise;
            solve(num - 1, wise);
            initVisited();
        }
        cout << "#" << tc << " " << getResult() << "\n";
    }
    return 0;
}
cs


'SWEA::문제풀이' 카테고리의 다른 글

3304 최장 공통 부분 수열  (0) 2018.04.08
2382 미생물 격리  (2) 2018.03.29
4008 숫자 만들기  (0) 2018.03.22
4012 요리사  (2) 2018.03.17
1258 행렬찾기  (0) 2018.02.25

+ Recent posts