문제: icpc.me/1063
조건에 맞게 시뮬레이션을 돌려주면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <cstdio> #include <algorithm> #include <string> #include <iostream> using namespace std; string mov[] = { "R","L","B","T","RT","LT","RB","LB" }; string a; int dx[] = { 0,0,-1,1,1,1,-1,-1 }; int dy[] = { 1,-1,0,0,1,-1,1,-1 }; int n, kx, ky, sx, sy; int chk(int x, int y) { return 1 <= x&&x <= 8 && 1 <= y&&y <= 8; } void move(string s) { for (int i = 0; i < 8; i++) { if (s == mov[i]) { int nx = kx + dx[i]; int ny = ky + dy[i]; if (!chk(nx, ny))return; if (sx == nx&&sy == ny) { int xx = sx + dx[i]; int yy = sy + dy[i]; if (!chk(xx, yy))return; sx = xx; sy = yy; } kx = nx; ky = ny; return; } } } int main() { ios_base::sync_with_stdio(false); string x, y; cin >> x >> y >> n; ky = x[0] - 'A' + 1; kx = x[1] - '0'; sy = y[0] - 'A' + 1; sx = y[1] - '0'; while (n--) { cin >> a; move(a); } cout << (char)('A' + ky - 1) << kx << '\n' << (char)('A' + sy - 1) << sx; return 0; } | cs |
'알고리즘 관련 > BOJ' 카테고리의 다른 글
BOJ)10256 돌연변이 (0) | 2017.08.03 |
---|---|
BOJ)9250 문자열 집합 판별 (0) | 2017.08.02 |
BOJ)1514 자물쇠 (0) | 2017.08.01 |
BOJ)5721 사탕 줍기 대회 (0) | 2017.08.01 |
BOJ)11560 다항식 게임 (0) | 2017.08.01 |