티스토리 뷰

Algorithm/BOJ

14499 주사위 굴리기

henry1214 2018. 4. 6. 16:21

https://www.acmicpc.net/problem/14499



d 배열에 주사위 전개도의 1~6 위치의 값들을 관리하면서 시뮬레이션 해본다. 이동한 후 지도의 값이 0이면 밑면(d[6])의 수를 복사하고 아니라면 지도의 값을 밑면의 수에 복사하고 지도의 값을 0으로 바꾼다.



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
#include <cstdio>
 
int n,m,map[20][20],d[7],x,y,k,op,nx,ny;
int dx[5]={0,0,0,-1,1},dy[5]={0,1,-1,0,0};
 
void move(int op)
{
    int t;
    if(op==1) t=d[1],d[1]=d[4],d[4]=d[6],d[6]=d[3],d[3]=t;
    else if(op==2) t=d[1],d[1]=d[3],d[3]=d[6],d[6]=d[4],d[4]=t;
    else if(op==3) t=d[1],d[1]=d[5],d[5]=d[6],d[6]=d[2],d[2]=t;
    else t=d[1],d[1]=d[2],d[2]=d[6],d[6]=d[5],d[5]=t;
}
 
int main()
{
    scanf("%d %d %d %d %d",&n,&m,&x,&y,&k);
    for(int i=0;i<n;i++for(int j=0;j<m;j++)
        scanf("%d",&map[i][j]);
    while(k--)
    {
        scanf("%d",&op);
        nx=x+dx[op],ny=y+dy[op];
        if(nx<0 || nx>=|| ny<0 || ny>=m) continue;
        x=nx,y=ny;
        move(op);
        if(map[x][y]==0) map[x][y]=d[6];
        else d[6]=map[x][y],map[x][y]=0;
        printf("%d\n",d[1]);
    }
    return 0;
}
cs


'Algorithm > BOJ' 카테고리의 다른 글

14502 연구소  (0) 2018.04.09
14501 퇴사  (0) 2018.04.06
13458 시험 감독  (0) 2018.04.06
12100 2048 (Easy)  (0) 2018.04.06
13567 로봇  (0) 2018.04.02
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday