#include <stdio.h>
int dice[10000][6]={0};
int top(int n);
int front(int a); //반대편에 있는 수
int where(int a, int num); //수의 위치
int main(void)
{
int n, i, j, result;
scanf(" %d", &n);
for(i=0; i<n; i++)
{
for(j=0; j<6; j++)
scanf(" %d", &dice[i][j]);
}
result=top(n);
printf("%d", result);
return 0;
}
int top(int n)
{
int i, j, m=0, sum, a, aa;
for(i=0; i<6; i++)
{
sum=0;
a=i;
for(j=0; j<n; j++)
{
aa=front(a); //반대편의 좌표
if(dice[j][a]!=6 && dice[j][aa]!=6) //바닥과 위가 모두 6이 아닐 경우
sum+=6;
else if(dice[j][a]!=5 && dice[j][aa]!=5) //바닥과 위 중 한 곳이 6이고 다른 곳은 5가 아닐 경우
sum+=5;
else //바닥과 위가 5, 6일 경우
sum+=4;
a=where(j, dice[j][aa]); //다음 주사위에서 같은 숫자의 위치
}
if(sum>m)
m=sum;
}
return m;
}
int front(int a)
{
if(a==0)
return 5;
else if(a==1)
return 3;
else if(a==2)
return 4;
else if(a==3)
return 1;
else if(a==4)
return 2;
else if(a==5)
return 0;
}
int where(int a, int num)
{
int i;
a++;
for(i=0; i<6; i++)
{
if(dice[a][i]==num)
return i;
}
}
2018.01.27 12:07
정올 - 실력키우기 - 주사위 쌓기(1147)
조회 수 286 추천 수 0 댓글 0