C, C++/숏코딩 일지

1525번 크레이지 아케이드 문제를 줄여보았다.

Shinya Matsuri 2019. 4. 27. 11:12

1525 크레이지 아케이드

 

http://codeup.kr/problem.php?id=1525

 

크레이지 아케이드

-2 0 0 -1 0 -1 -1 -2 -2 -1 -2 -2 -1 0 -1 -1 -2 -2 -2 0 -2 -1 -2 -1 -2 -2 -2 0 0 0 -2 -1 -1 -2 -2 0 0 0 0 0 -1 0 0 -2 0 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 -2 -2 -2 -2 -2 -2 -2 -2 -2 0 0 0 0 -2 0 -2 -2 -2 0 0 0 0 0 -2 0 0 -2 0 0 2 Character

codeup.kr

 

반복 사용되는 for문을 줄였다.

반복 사용되는 if문을 줄였다.

전역 변수로 분리하여 초기값 설정구문을 줄였다.

 

#define A a[x][y]
#define N a[i][j]
#define P for(i=1;i<=n;i++)
#define X(m) for(m=1;m<11;m++)
#define W if(t==
int n,i,j,f,k,a[11][11],U,R,c[9],l,x,y;int C(int t){W 1){U=0;R=-1;}W 2){U=0;R=1;}W 3){U=-1;R=0;}W 4){U=1;R=0;}}main(){X(i)X(j)scanf("%d",&N);X(i){X(j){if(N>0){for(k=1;k<5;k++){C(k);x=i;y=j;l=A;f=l;while(x&&y&&f!=-1&&x<11&&y<11&&l){x+=U;y+=R;f=A;if(!f)A=-2;l--;}}N=-2;}}}scanf("%d",&n);P{scanf("%d%d",&x,&y);if(!A){A=i;c[i]=i;}}X(i){X(j) printf("%d ",N);puts("");}puts("Character Information");P{printf("player %d ",i);if(c[i])puts("survive");else puts("dead");}}

 

//어찌저찌 2등했는데 1등 코드가 상상이 안간다.

//뭔가 내 방식과는 달리 최적화된 다른 알고리즘을 사용하는 것 같기도 하다.