주어진 명령에 따라 팔을 움직이면서 자취를 그린다.
이미 그 곳에 자취가 그려져있는데 다른 방향이라면 + 를 그린다.
#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; }
댓글 없음:
댓글 쓰기