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
|
#include <bits/stdc++.h>
using namespace std;
bool tob[4][8],visit[4];
int ans;
void turn(int num, int dir)
{
visit[num] = true;
bool left = tob[num][6], right = tob[num][2];
if(dir == -1)
{
bool temp = tob[num][0];
for(int i=0;i<7;i++)
tob[num][i] = tob[num][i+1];
tob[num][7] = temp;
}
else
{
bool temp = tob[num][7];
for(int i=7;i>0;i--)
tob[num][i] = tob[num][i-1];
tob[num][0] = temp;
}
if( num - 1 >= 0 && !visit[num - 1] && left != tob[num - 1][2])
turn(num - 1, -dir);
if ( num + 1 < 4 && !visit[num + 1] && right != tob[num+1][6])
turn(num + 1, -dir);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int K,num,dir,temp;
for(int i=0;i<4;i++)
{
cin>>temp;
int idx = 7;
while(temp){
tob[i][idx--] = temp%10;
temp/=10;
}
}
cin>>K;
for(int i=0;i<K;i++)
{
cin>>num>>dir;
memset(visit, false, sizeof(visit));
turn(num - 1, dir);
}
int mul = 1;
for(int i=0;i<4;i++)
{
if (tob[i][0])
ans += mul;
mul *= 2;
}
cout<<ans;
return 0;
}
|
cs |
매우 간단하다. 입력을 받고 톱니바퀴를 돌리는데 범위에 맞고 방문하지 않았던 톱니바퀴가 돌아갈 상황이면 돌리면 된다.
배열 돌리기 4 (C++) GOLD IV (0) | 2020.08.28 |
---|---|
17140. ⚾ (C++) GOLD IV (0) | 2020.08.18 |
2174. 로봇 시뮬레이션(C++) GOLD V (0) | 2020.08.18 |
17140. 이차원 배열과 연산 GOLD IV (C++) (0) | 2020.08.08 |
스타트 택시(C++) - GOLD V (1) | 2020.07.20 |
댓글 영역