주어진 명령에 따라 팔을 움직이면서 자취를 그린다.
이미 그 곳에 자취가 그려져있는데 다른 방향이라면 + 를 그린다.
#include <bits/stdc++.h>
using namespace std;
int n;
char pan[101][101];
int DY[]={1,-1,0,0};
int DX[]={0,0,-1,1};
char cmd[]={'D','U','L','R'};
char pen[]={'|','|','-','-'};
bool same(char p, char q){
if(!p || !q) return true;
return p == q;
}
char trace(int y, int x, char want){
if(pan[y][x] && !same(pan[y][x], want)) return '+';
return want;
}
int main(){
char s[1005]={};
scanf("%d %s", &n, s);
int i, j, y=0, x=0, len=strlen(s);
char prev = 0;
for(i=0; i<len; ++i){
char cur = s[i];
for(j=0; j<4; ++j){
int dy=y+DY[j], dx=x+DX[j];
if(dy<0 || dx<0 || dy>=n || dx>=n || cur!=cmd[j]) continue;
pan[y][x] = trace(y, x, pen[j]);
y = dy; x = dx;
pan[y][x] = trace(y, x, pen[j]);
break;
}
}
for(i=0; i<n; ++i){
for(j=0; j<n; ++j){
putchar(pan[i][j] ? pan[i][j] : '.');
}
puts("");
}
return 0;
}
댓글 없음:
댓글 쓰기