#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)
조회 수 264 추천 수 0 댓글 0